Compare commits

..

39 Commits

Author SHA1 Message Date
Carsten Haitzler 49c95a3567 0.25.3 2022-02-10 09:56:36 +00:00
Carsten Haitzler 3fc4a1c1c0 notification - fix shadow around extra notifications when all shown
if you show notifications on all screens the extra ones not on the
current screen get a shadow - this is wrong. this fixes that

@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 5c7bd88632 gesture - add an option to turn it all on or off
so - some people have issues if we open devices. why... i don't know,
but add an option to toggle this and be conservative and have it off
by default

@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 6d3a24be36 backlight - add option for ddc to work or not
just because libddcutil is installed doesnt mean someone always wants
backlight on monitors controlled, so allow an option.
2022-02-10 09:52:41 +00:00
Carsten Haitzler 0269ee1d95 ibar - emit left/right a;ign if gadcon is left/right vertical
@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 7355d8d2a9 theme - ibar/ibox label overlay - properly align with text min size
@fix
2022-02-10 09:52:41 +00:00
Carsten Haitzler 6aff4fc3aa move to 0.25.2 for micro release 2022-02-07 19:05:31 +00:00
Carsten Haitzler 18b1b27820 pkgkit - count pkgs total in gadgets
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler dd94b435a3 deskmirror - donbt show iconified windows
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler d593cf51ff build - fix cc.links for bsd case to use args not link args
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler 66b6d770d8 focus - fix some lingering mis-focus issues
finally fix T8980 (i hope)
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler e571381227 modules - add procstats to whitelist 2022-02-07 19:04:07 +00:00
Carsten Haitzler 9477828550 pager - don't keep building up more popups on popups on switches
re-use the existing popup and stop stacking more and more.

@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler 6a72eb3cee efm - recent - fix up mis-sorting on re-load and make icons better
was missing thumbnails - now do them. fix re-sorting of items weirdly
on re-load later.

@fix
2022-02-07 19:04:07 +00:00
Marcel Hollerbach 4814a63d4c e_client: fix more focus weirdness
parent should be raised, even though it is not the modal.
2022-02-07 19:04:07 +00:00
Carsten Haitzler 9dd6a7778c efm - do same mime lookup method as efm in recents menu
@fix
2022-02-07 19:04:07 +00:00
Carsten Haitzler 5a81d09519 desklock settinghs - fix kbd layout list to fill vert
@fix
2022-02-07 19:04:07 +00:00
maxerba e38658b8e9 Updating french and italian translations 2022-02-07 19:04:05 +00:00
Carsten Haitzler 61b73a4ed6 shot - reset cnp flag once cnp'd
otherwise we segv assuming we are doing cnp still and access a null
cnp_file.

@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 200fea6e38 focus out - ignore all ungrabs as we unfocus a window that should be
this fixes a boundary case on mouse ungrabs

@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 7c0d3f2e2f xkb config - fix segv on close advanced mode dialog
didnt remove the lists with del callbacks that accessed the cfdata
struct to set lisrts to null on del before cfdata was freed...
callback hell. yay.

@fix
2022-02-07 19:03:09 +00:00
Christopher Michael fdd31a87ee e_about: Update copyright year 2022-02-07 19:03:09 +00:00
Carsten Haitzler 48a8a757e5 bz5 - dont ping devices on unpowered adapter
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler bbbf550df3 fileman - fix favorites to scale
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 0fa389fc52 bluez5 - dont need the force conenct option it seems - cant find a need
if connected AND trusted it should conenct again next time you power
them on etc. ... so .. let's remove extra option cruft we seemingly
don't need - less confusion for users

@fix
2022-02-07 19:03:09 +00:00
Marcel Hollerbach 0e64bbfc56 focus: leave frame focus setting here
that might cause bugs, however, everything else might end up in a
endless recursion.
2022-02-07 19:03:09 +00:00
Carsten Haitzler 75cf099ee5 bluez mod - on unload deregister gadcon class
fix leak of this class on unload.

@fix
2022-02-07 19:03:09 +00:00
Marcel Hollerbach 35b8f86906 focus: do not revert to another client when client is unfocused
This was a nice idea to fix most focus bugs at once. However, due to the
runtime of e many things can get "randomly" focused, for exmaple: volume
control on the frame, internal dialogs, config value screens when
grabbing for keys, widgets when they get created in a gadget. The list
is quite long. However, fixing all those little bugs is hard and partly
impossible as the behaviour is correct in the context of a toolkit, not
in the context of a compositor.

Long term we should split window-focus and canvas-focus from each other,
then bugs like these would not be a problem anymore.
2022-02-07 19:03:09 +00:00
maxerba 9881953815 Updating french and portuguese translations 2022-02-07 19:03:09 +00:00
Carsten Haitzler a034e94882 e focus - fix previous commit segv on no windows left
if window deleted is the focused on... oops - BOOM. not handled.
handle it. also revert x focus to root so bindings work.

fixes previous 2d86d75139

@fix
2022-02-07 19:03:09 +00:00
Marcel Hollerbach cabb9aff01 add forgotten header define 2022-02-07 19:03:09 +00:00
Marcel Hollerbach 2e99d11a1b e_client: revert focus instead of setting it to NULL
When closing a client a few different things can happen:
1. Client hides, this will destroy the e_client object, which will
   reverts focus to another client.
2. Client hook del, this will recover focus to the root window if no
   e_client is focused.
3. Client unfocus event, setted the focused to NULL and sets the focus field to 0.

when first 1 happens then 2 or 3 everything is fine. However, it seems
that sometimes first 3 happend, then 2, then 1. Which results in focus
beeing first NULL, then recovered to the root window, resulting in the
wrong things happening.
2022-02-07 19:03:09 +00:00
Carsten Haitzler 91877ed2d3 e_icon - switch from edj/std icon to custom img file properly
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler 0842e8d33a systray - add more debugging to find clients that act oddly
@fix
2022-02-07 19:03:09 +00:00
Carsten Haitzler b54511ca77 release - 0.25.1 2022-01-03 00:52:26 +00:00
Carsten Haitzler 2ee244376e e - border list - fix list to filter volume out
the volume style is not a border but the gadget - a mistake made long
ago when this was added. cant change now due to theme compat to filter
out in code

@fix
2022-01-03 00:47:29 +00:00
Carsten Haitzler 1077b09bb7 gesture - vm (vbox) detect hack to work around xorg no display bug
so... you go through wizard - only in vbox it seems (or maybe other
vm's - don't know - only tried vbox - this doesnt happen on real
systems). at the end e restarts... and it's blank. e is actually
rendering. you can screengrab (eg import -window root out.png) and see
the screen drawn just fine. xrandr is all set up right - everything is
kosher... but nothing will display except the curosr. xorg is just not
displaying rendered content. somehow e's gesture code and use of
logind/libinput to get inpiut devices for gestures tickles this xorg
bug. i don't quite know why as xorg doesnt seem to be complaining.
once you restart the xorg process everything works fine from there on.
it's some bug inside xorg that just refuses to display output.
manually changing resolution with xrandr will reset things and have
things render... until e restarts. a fukll xorg re-run is needed to
fix it... there just is nothing i can see that e is doing wrong or to
fix in e... so this is a workaround the xorg side by just not using
the gesture support if on a vm. they won't have touchpads anyway and
emulate mice so ... no real loss. this won't affect peolpe on real
systems and it may not always work as a workaround as it relies on
systemd-detect-virt or hostnamectl.

@fix
2022-01-03 00:47:24 +00:00
Carsten Haitzler 7bd186b84b windows - netxcloud app - fix constant show/hide cycles
e is not ignoring the first unmap event on this reparent ... this
fixes that and the nextcloud app stops making e sit and spin at full
cpu and flickering tasks etc.

@fix
2022-01-03 00:47:17 +00:00
Carsten Haitzler 6364cd3b59 release - 0.25 2021-12-26 11:45:13 +00:00
186 changed files with 388338 additions and 394065 deletions

6
.arcconfig Normal file
View File

@ -0,0 +1,6 @@
{
"project_id" : "enlightenment-git",
"projects" : "enlightenment-git",
"conduit_uri" : "https://phab.enlightenment.org/",
"phabricator.uri" : "https://phab.enlightenment.org/"
}

View File

@ -1,6 +1,6 @@
Copyright notice for Enlightenment:
Copyright (C) 2000-2024 Carsten Haitzler and various contributors (see AUTHORS)
Copyright (C) 2000-2020 Carsten Haitzler and various contributors (see AUTHORS)
All rights reserved.

59
INSTALL Normal file
View File

@ -0,0 +1,59 @@
** COMPILING and INSTALLING **
------------------------------
Meson is the build system used for this project. For more information please
see:
http://mesonbuild.com
----
Normal compilation in /usr/local:
meson . build
ninja -C build
sudo ninja -C build install
For meson build generic options:
meson --help
For a list of project specific options supported:
cat meson_options.txt
To set 1 or more project specific options:
meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build
To display current configuration:
meson configure build
The above will only work after at least the following is done:
meson . build
** QUICK AND DIRTY HELP **
--------------------------
How to clean out the build and config and start fresh:
rm -rf build
How to make a dist tarball and check its build:
(must do it from git tree clone and commit all changes to git first)
ninja -C build dist
How to change prefix:
meson --prefix=/path/to/prefix . build
How to install in a specific destination directory for packaging:
DESTDIR=/path/to/destdir ninja -C build install
How to build with verbose output (full commands run):
ninja -C build -v

6753
NEWS Normal file

File diff suppressed because it is too large Load Diff

47
README Normal file
View File

@ -0,0 +1,47 @@
Enlightenment
-------------
Please report bugs and submit patches at https://phab.enlightenment.org
REQUIREMENTS
------------
Must:
* efl
* libpam (On Linux)
Highly suggested:
* libexif (exif metadata display support)
* evas_generic_loaders (All loaders)
* bluez5 (BT support and l2ping tool)
* connman
* bc (For everything calculator)
* pulseaudio
* acpid (Unless your system doesn't have ACPI at all)
* packagekit (For packagekit module updates status)
* udisks2
* gdb (If you want automatic bactraces in ~/.e-crashdump.txt)
COMPILING AND INSTALLING
------------------------
For sample configuration options please look in the ./confs/ directory
for scripts that pass in commonly used options.
Please see the INSTALL file: https://git.enlightenment.org/core/enlightenment.git/tree/INSTALL
NOTE: Users of DR16 will need to rename the $prefix/bin/enlightenment
file prior to installing this release or it will be overwritten.
NOTE: If you do not want security issues make sure sysactions.conf is in
/etc/enlightenment (not PREFIX/etc/enlightenment) as this is the first place
it looks at. This file is intended to be customized by packagers and
system integrators to match your policies and scripts/tools.
NOTE: To enable wayland support (still considered experimental and not for
regular end users) use the meson -Dwl=true option. To run enlightenment in
wayland mode, just log on on ant vt and run enlightenment_start. If you
wish to debug and see all the output try using something like screen then
attaching to the remote screen session by sshing in etc.

225
README.md
View File

@ -1,225 +0,0 @@
![Enlightenment](/data/readme/enlightenment.png)
# Enlightenment
![Screenshot](/data/readme/screenshot.png)
-----
*Please report bugs/issues at*
[git.enlightenment.org](https://git.enlightenment.org/enlightenment/enlightenment/issues)
-----
Enlightenment is a Window Manager, Compositor and basic "Desktop
Shell". It replaces your GUI environment that runs your day to day
graphical Desktop. It includes a built-in File Manager, Application
Launcher, Shelves, Settings Dialogs, Menus, Audio Mixer Controls, Network
Control front-end (for Connman), Battery Monitoring, CPU Frequency
Controls, Screen Blanking and Backlight controls, Screenshotting and
editing, Clock and Calendar, Temperature Guages, Mpris2 Music Controls,
Packagekit Update Front-end, Bluetooth controls for BlueZ 5, Screen
resolution and layout controls and much much more.
Enlightenment is one of the lowest resource environments around
relative to its featureset.
Enlightenment is primarly developed for X11, but does have an
experimental Wayland mode that will have issues, so only try it if
you are adventurous or willing to work on it.
For more information please see
[Enlightenment's About Page](https://www.enlightenment.org/about-enlightenment).
![Screenshot 2](/data/readme/screenshot2.png)
![Screenshot 3](/data/readme/screenshot3.png)
![Screenshot 4](/data/readme/screenshot4.png)
![Screenshot 5](/data/readme/screenshot5.png)
![Screenshot 6](/data/readme/screenshot6.png)
-----
Things that need doing:
[TODO](TODO.md)
-----
## Requirements
Must:
* [efl](https://git.enlightenment.org/enlightenment/efl)
* libpam (Required on Linux, not BSD)
Highly suggested:
* libexif (exif metadata display support)
* bluez5 (BT support and l2ping tool)
* connman
* bc (For everything calculator)
* pulseaudio
* acpid (Unless your system doesn't have ACPI at all)
* packagekit (For packagekit module updates status)
* udisks2
* gdb (If you want automatic bactraces in ~/.e-crashdump.txt)
-----
## Compiling and Installing
Meson is the build system used for this project. For more information
please see [mesonbuild.com](https://mesonbuild.com)
You will need normal build tooling installed such as a compiler (gcc
or clang for example), pkg-config, ninja, any relevant package-dev or
package-devel packages if your distribution splits out development
headers (e.g. libc6-dev) etc.
Depending on where dependencies (like efl) are installed, you might have to
set your `PKG_CONFIG_PATH` environment variable like:
```sh
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
```
Also note that some distributions like to add extra arch directories
to your library locations so you might have to have more like:
```sh
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig
```
You will need to ensure that the destination library directory (e.g.
`/usr/local/lib` is in your /etc/ld.so.conf or /etc/ld.so.conf.d/
files and after installing anything that installs libraries you
re-run `ldconfig`. Please see relevant documentation on ldconfig and
ld.so.conf for your distribution.
You might also want to add the destination bin dir to your environment
variable PATH (see documentation on your shell PATH variable) such as:
```sh
export PATH=/usr/local/bin:/usr/bin:/bin
```
Normal compilation in /usr/local:
```sh
meson . build
ninja -C build
sudo ninja -C build install
```
For meson build generic options:
```sh
meson --help
```
For a list of project specific options supported:
```sh
cat meson_options.txt
```
To set 1 or more project specific options:
```sh
meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build
```
To display current configuration:
```sh
meson configure build
```
The above will only work after at least the following is done:
```sh
meson . build
```
### Quick build help
How to clean out the build and config and start fresh:
```sh
rm -rf build
```
How to make a dist tarball and check its build:
(must do it from git tree clone and commit all changes to git first)
```sh
ninja -C build dist
```
How to change prefix:
```sh
meson --prefix=/path/to/prefix . build
```
How to install in a specific destination directory for packaging:
```sh
DESTDIR=/path/to/destdir ninja -C build install
```
How to build with verbose output (full commands run):
```sh
ninja -C build -v
```
-----
**NOTE:** Once Enlightenment is started by `enlightenment_start`, all
output logs are put in `~/.e-log.log`. The previous log for the
previous execution of Enlightenment will be moved to `~/.e-log.log.old`.
-----
**NOTE:** If you install enlightenment to the default compile prefix
(`/usr/local`) then you might want to ensure the session file is
accessible to your login manager (assuming you use one) by doing
something like:
```sh
sudo ln -s /usr/local/share/xsessions/enlightenment.desktop /usr/share/xsessions/enlightenment.desktop
```
You can also just set up a custom launcher script. Edit the
`~/.xinitrc` file in your home directory and have it have this content:
```sh
#!/bin/sh
exec /usr/local/bin/enlightenment_start >& ~/.xsession-errors
```
(`exec` tells the shell to replace itself with the following command
and `>& ~/.xsession-errors` ensures all output is logged to the
`~/.xsession-errors` file).
You may also want your `~/.xsession` file to be the same, so make a link:
```sh
ln -s .xinitrc .xsession
```
This assumes `/usr/local` as well and just modify based on your
install prefix location.
If you do not use a login manager you can just log into a text console
and run `startx` after the above `.xinitrc` file is set up.
-----
**NOTE:** If you do not want security issues make sure `sysactions.conf` is in
`/etc/enlightenment` (not `PREFIX/etc/enlightenment`) as this is the first
place it looks at. This file is intended to be customized by packagers and
system integrators to match your policies and scripts/tools. This also
applies to `system.conf` in the same directory.
-----
**NOTE:** To enable Wayland support (still considered experimental and not for
regular end users) use the meson `-Dwl=true option`. To run Enlightenment in
Wayland mode, just login on any text VT and run `enlightenment_start`. If you
wish to debug and see all the output try using something like screen then
attaching to the remote screen session by sshing in etc.
-----
**NOTE:** Nvidia support - do *not* enable Wayland support if you have
Nvidia cards and use Nvidia drivers. You will need to use **full**
OpenGL+GLX with EFL instead of the default OpenGL-ES/EGL for those to not
have problems and this conflicts with any **DRM** and **Wayland** support.
You will

View File

@ -1,3 +1,4 @@
TODO:
* need a better "extra" that allows shot-module like sharing of:
* themes
* wallpapers
@ -50,9 +51,9 @@
* bt tethering
* usb tehtering
* wifi tethering
* fix vkbd to work in wl - e_kbd_send.c - look at ecore_wl2_input.c
* clean up some old actions that are handled better by newer ones
* like suspend intelligently is better than regular suspend but
* S fix vkbd to work in wl - e_kbd_send.c - look at ecore_wl2_input.c
* S clean up some old actions that are handled better by newer ones
* S like suspend intelligently is better than regular suspend but
suspend now is very explicit and worth keeping
* clock - add event/alarm/appointment tracking and notifications etc.
* this perhaps can be merged with the cron front-end
@ -76,10 +77,12 @@
* face auth (howdy / pam-face / pam-face-authentication / pam-facial-auth)
* yubikey
* usb drive (pam_usb)
* support setting up fingerprint as auth (fprint-enroll)
* support setting up smartcard as auth
* support setting up face auth (howdy / pam-face / pam-face-authentication / pam-facial-auth)
* support setting up yubikey as auth
* support setting up usb drive for auth (pam_usb)
* support fprint auth for polkit agent (ugh)
* wifi/bt net: associate app/desktop(s) or actions to run when:
* bt device comes or goes (alongside lock device feature)
* wifi appears or disappears
@ -243,10 +246,8 @@
* display other devices in above list separately
* handle string capacity values like Full, High, Normal, Low, Critical...
* randr: get auto layout to handle screens laid out like:
```
[dp2-2][dp2-1] <- 2 external monitors
[edp-1] <- laptop main display
```
* randr: when losing a zone/screen, put windows in purgatory and then have
purgatory screens available via pager to drag onto a current screen,
or the specific virtual desktops from purgator to be accessible even
@ -292,15 +293,15 @@
* look into libratbag too for gaming mouse stuff if its worth using it or
just doing the same
stuff ourselves as we will probably have to via libinput
* some kind of game mode and detection that will do things like:
* disable screen dimming/blanking
* set cpu to max performance
* lower priority/nice of non-game processes or even sigstop procs
* disable notifications
* explicit toggle and possible auto-detect of games running
* S some kind of game mode and detection that will do things like:
* S disable screen dimming/blanking
* S set cpu to max performance
* S lower priority/nice of non-game processes or even sigstop procs
* S disable notifications
* S explicit toggle and possible auto-detect of games running
* per app environment launch config - allow different TZ, LOCALE etc.
per app and set up env appropriately
* apps - ability to flag apps as "single run" so launching again from
* apps - ability to flag apps as "single run" so launchgin again from
menu/ibar will just focus the current window/jump to it etc.
* back-end e system process for monitoring/polling and launching etc.
* split e up into front vs back-end with back-end doing things like
@ -322,6 +323,7 @@
* need to allow a CONT every now and again to unblock buffers
* set backlight and dim timeout per powersave level
* battery - set powersave levels based on ac or battery level
* efl: flat theme redo
* efl/eo: start using efl loop as core loop
* begin to move some login out into efl threads+loops
* to change ui - callsync/async back to ui/main loop
@ -332,6 +334,12 @@
* have edje object stash
* mixer: improve ui in emixer
* emixer - support selecting recording dev for apps like pavucontrol
* look at showing vu bars per recoridng or maybe output devices
* offer ability to show vu output in mixer gadget
* weather
* bring in forecasts into core e
* forecasts will due feb 2021. yahoo shutting down free api.
given all the changes needed to do a new api...
may as well write a whole new weather gadget.
* free api:
* https://api.met.no/weatherapi/locationforecast/2.0/documentation
* a dependency of this (so we can provide lat/lon)

View File

@ -58,8 +58,7 @@ group "E_Config" struct {
value "winlist_mode" int: 1;
value "winlist_large_size" double: 0.6666;
value "winlist_list_size" double: 0.3333;
value "winlist_list_no_miniatures" uchar: 0;
value "no_state_hidden_desktop" uchar: 0;
value "winlist_list_no_miniatures" int: 0;
value "maximize_policy" int: 49;
value "allow_manip" int: 0;
value "border_fix_on_shelf_toggle" int: 0;
@ -140,8 +139,6 @@ group "E_Config" struct {
value "clientlist_max_caption_len" int: 2;
value "mouse_hand" int: 1;
value "mouse_accel" double: 0.0;
value "mouse_flat_accel" uchar: 0;
value "mouse_hires_scroll" uchar: 1;
value "mouse_accel_threshold" int: 4;
value "mouse_natural_scroll" uchar: 0;
value "mouse_emulate_middle_button" uchar: 1;
@ -149,7 +146,6 @@ group "E_Config" struct {
value "touch_natural_scroll" uchar: 0;
value "touch_emulate_middle_button" uchar: 1;
value "touch_tap_to_click" uchar: 0;
value "touch_flat_accel" uchar: 0;
value "touch_clickpad" uchar: 1;
value "touch_scrolling_2finger" uchar: 1;
value "touch_scrolling_edge" uchar: 0;

View File

@ -54,8 +54,7 @@ group "E_Config" struct {
value "winlist_mode" int: 1;
value "winlist_large_size" double: 0.6666;
value "winlist_list_size" double: 0.3333;
value "winlist_list_no_miniatures" uchar: 0;
value "no_state_hidden_desktop" uchar: 0;
value "winlist_list_no_miniatures" int: 0;
value "maximize_policy" int: 50;
value "allow_manip" int: 0;
value "border_fix_on_shelf_toggle" int: 0;
@ -138,8 +137,6 @@ group "E_Config" struct {
value "clientlist_max_caption_len" int: 2;
value "mouse_hand" int: 1;
value "mouse_accel" double: 0.0;
value "mouse_flat_accel" uchar: 0;
value "mouse_hires_scroll" uchar: 1;
value "mouse_accel_threshold" int: 4;
value "mouse_natural_scroll" uchar: 0;
value "mouse_emulate_middle_button" uchar: 1;
@ -147,7 +144,6 @@ group "E_Config" struct {
value "touch_natural_scroll" uchar: 0;
value "touch_emulate_middle_button" uchar: 1;
value "touch_tap_to_click" uchar: 0;
value "touch_flat_accel" uchar: 0;
value "touch_clickpad" uchar: 1;
value "touch_scrolling_2finger" uchar: 1;
value "touch_scrolling_edge" uchar: 0;

View File

@ -15,6 +15,18 @@ group "E_Config_Bindings" struct {
value "action" string: "backlight_adjust";
value "params" string: "10";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 0;
value "action" string: "dim_screen";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 1;
value "action" string: "undim_screen";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 3;

View File

@ -54,8 +54,7 @@ group "E_Config" struct {
value "winlist_mode" int: 1;
value "winlist_large_size" double: 0.6666;
value "winlist_list_size" double: 0.3333;
value "winlist_list_no_miniatures" uchar: 0;
value "no_state_hidden_desktop" uchar: 0;
value "winlist_list_no_miniatures" int: 0;
value "maximize_policy" int: 50;
value "allow_manip" int: 0;
value "border_fix_on_shelf_toggle" int: 0;
@ -139,15 +138,12 @@ group "E_Config" struct {
value "mouse_hand" int: 1;
value "mouse_accel" double: 0.0;
value "mouse_accel_threshold" int: 4;
value "mouse_flat_accel" uchar: 0;
value "mouse_hires_scroll" uchar: 1;
value "mouse_natural_scroll" uchar: 0;
value "mouse_emulate_middle_button" uchar: 1;
value "touch_accel" double: 0.0;
value "touch_natural_scroll" uchar: 0;
value "touch_emulate_middle_button" uchar: 1;
value "touch_tap_to_click" uchar: 0;
value "touch_flat_accel" uchar: 0;
value "touch_clickpad" uchar: 1;
value "touch_scrolling_2finger" uchar: 1;
value "touch_scrolling_edge" uchar: 0;

View File

@ -15,6 +15,18 @@ group "E_Config_Bindings" struct {
value "action" string: "backlight_adjust";
value "params" string: "10";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 0;
value "action" string: "dim_screen";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 22;
value "status" int: 1;
value "action" string: "undim_screen";
}
group "E_Config_Binding_Acpi" struct {
value "context" int: 0;
value "type" int: 3;

View File

@ -2,8 +2,7 @@ install_data([ 'enlightenment.png',
'test.png',
'test.jpg',
'test.edj',
'test.svg',
'wayland.png'
'test.svg'
],
install_dir: join_paths(dir_data, 'enlightenment/data/images')
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

View File

@ -1,5 +1,5 @@
[Desktop Entry]
Type=XSession
Type=Application
Name=Enlightenment
Name[ca]=Enlightenment
Name[de]=Enlightenment

View File

@ -1,2 +1,17 @@
subdir('x')
subdir('wl')
desktop_config = configuration_data()
desktop_config.set('prefix', dir_prefix)
desktop_config.set('VERSION', e_version_rev)
e_desktop = configure_file(input : 'enlightenment.desktop.in',
output : 'enlightenment.desktop',
configuration: desktop_config
)
if config_h.has('HAVE_WAYLAND') == true
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
endif
if config_h.has('HAVE_WAYLAND_ONLY') == false
install_data(e_desktop,
install_dir : join_paths(dir_data, 'xsessions'))
endif

View File

@ -1,38 +0,0 @@
[Desktop Entry]
Type=Application
Name=Enlightenment (Wayland)
Name[ca]=Enlightenment (Wayland)
Name[de]=Enlightenment (Wayland)
Name[el]=Enlightenment (Wayland)
Name[eo]=Enlightenment (Wayland)
Name[fi]=Enlightenment (Wayland)
Name[fr]=Enlightenment (Wayland)
Name[gl]=Enlightenment (Wayland)
Name[ja]=Enlightenment (Wayland)
Name[ko]=Enlightenment (Wayland)
Name[ms]=Enlightenment (Wayland)
Name[pl]=Enlightenment (Wayland)
Name[ru]=Enlightenment (Wayland)
Name[sr]=Просвећење (Wayland)
Name[tr]=Enlightenment (Wayland)
Comment=Log in using Enlightenment (Version @VERSION@)
Comment[ca]=Iniciar sessió amb Enlightenment (Versió @VERSION@)
Comment[da]=Log ind med Enlightenment (Version @VERSION@)
Comment[de]=Anmelden und Enlightenment verwenden (Version @VERSION@)
Comment[el]=Είσοδος με το Enlightenment (Έκδοση @VERSION@)
Comment[eo]=Ensaluti pere de Enlightenment (Versio @VERSION@)
Comment[es]=Iniciar sesión usando Enlightenment (Versión @VERSION@)
Comment[fi]=Kirjaudu käyttäen Enlightenmentiä (versio @VERSION@)
Comment[fr]=Ouvrir une session Enlightenment (Version @VERSION@)
Comment[gl]=Iniciar sesión usando Enlightenment (Versión @VERSION@)
Comment[it]=Accedi con Enlightenment (Versione @VERSION@)
Comment[ko]=Enlightenment 로그인(버전 @VERSION@)
Comment[ms]=Daftar masuk menggunakan Enligtenment (Versi @VERSION@)
Comment[pt]=Iniciar sessão no Enlightenment (Versão @VERSION@)
Comment[ru]=Войти используя Enlightenment (Версия @VERSION@)
Comment[sr]=Пријавите се за коришћење Просвећења (издања @VERSION@)
Comment[tr]=Enlightenment kullanarak giriş yaın (Version @VERSION@)
Icon=@prefix@/share/enlightenment/data/images/enlightenment.png
TryExec=@prefix@/bin/enlightenment_start
Exec=env E_WL_FORCE=drm E_COMP_ENGINE=gl @prefix@/bin/enlightenment_start
DesktopNames=Enlightenment

View File

@ -1,12 +0,0 @@
desktop_config = configuration_data()
desktop_config.set('prefix', dir_prefix)
desktop_config.set('VERSION', e_version_rev)
e_desktop = configure_file(
input : 'enlightenment.desktop.in',
output : 'enlightenment.desktop',
configuration : desktop_config)
if config_h.has('HAVE_WAYLAND') == true
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
endif

View File

@ -1,12 +0,0 @@
desktop_config = configuration_data()
desktop_config.set('prefix', dir_prefix)
desktop_config.set('VERSION', e_version_rev)
e_desktop = configure_file(
input : 'enlightenment.desktop.in',
output : 'enlightenment.desktop',
configuration : desktop_config)
if config_h.has('HAVE_WAYLAND_ONLY') == false
install_data(e_desktop,
install_dir : join_paths(dir_data, 'xsessions'))
endif

View File

@ -1,6 +1,6 @@
##### project
project('enlightenment', 'c',
version : '0.26.99',
version : '0.25.3',
license : 'BSD 2 clause',
default_options: [ 'buildtype=release', 'c_std=gnu99', 'warning_level=2' ],
meson_version : '>= 0.47.0')
@ -30,7 +30,7 @@ else
config_h.set('E_RELEASE_BUILD' , '1')
endif
efl_version = '>= 1.27.0'
efl_version = '>= 1.26.0'
add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c')
dir_prefix = get_option('prefix')
@ -83,11 +83,6 @@ config_h.set('_POSIX_PTHREAD_SEMANTICS', '1')
config_h.set('_TANDEM_SOURCE' , '1')
config_h.set('__EXTENSIONS__' , '1')
str_ver_split = efl_version.replace('>= ', '').split('.')
config_h.set('MIN_EFL_VERSION_MAJ', str_ver_split[0])
config_h.set('MIN_EFL_VERSION_MIN', str_ver_split[1])
config_h.set('MIN_EFL_VERSION_MIC', str_ver_split[2])
subdir('po')
darwin = host_machine.system().startswith('darwin')
@ -298,7 +293,6 @@ dep_ecore_con = dependency('ecore-con' , required: true)
dep_ecore_input = dependency('ecore-input' , required: true)
dep_ecore_input_evas = dependency('ecore-input-evas', required: true)
dep_ecore_evas = dependency('ecore-evas' , required: true)
dep_ecore_audio = dependency('ecore-audio' , required: true)
dep_evas = dependency('evas' , required: true)
dep_edje = dependency('edje' , required: true)
dep_efreet = dependency('efreet' , required: true)

View File

@ -132,10 +132,6 @@ option('connman',
type: 'boolean',
value: true,
description: 'enable connman module: (default=true)')
option('convertible',
type: 'boolean',
value: true,
description: 'enable convertible module: (default=true)')
option('cpufreq',
type: 'boolean',
value: true,

View File

@ -18,7 +18,6 @@ hr
hu
it
ja
ka
km
ko
lt

19957
po/ar.po

File diff suppressed because it is too large Load Diff

20609
po/bg.po

File diff suppressed because it is too large Load Diff

19704
po/ca.po

File diff suppressed because it is too large Load Diff

19958
po/cs.po

File diff suppressed because it is too large Load Diff

19565
po/da.po

File diff suppressed because it is too large Load Diff

19683
po/de.po

File diff suppressed because it is too large Load Diff

20018
po/el.po

File diff suppressed because it is too large Load Diff

19598
po/eo.po

File diff suppressed because it is too large Load Diff

20430
po/es.po

File diff suppressed because it is too large Load Diff

21114
po/et.po

File diff suppressed because it is too large Load Diff

19564
po/fi.po

File diff suppressed because it is too large Load Diff

18744
po/fo.po

File diff suppressed because it is too large Load Diff

1933
po/fr.po

File diff suppressed because it is too large Load Diff

20838
po/fr_CH.po

File diff suppressed because it is too large Load Diff

19732
po/gl.po

File diff suppressed because it is too large Load Diff

20840
po/he.po

File diff suppressed because it is too large Load Diff

20580
po/hr.po

File diff suppressed because it is too large Load Diff

19731
po/hu.po

File diff suppressed because it is too large Load Diff

1638
po/it.po

File diff suppressed because it is too large Load Diff

20755
po/ja.po

File diff suppressed because it is too large Load Diff

16681
po/ka.po

File diff suppressed because it is too large Load Diff

18547
po/km.po

File diff suppressed because it is too large Load Diff

19871
po/ko.po

File diff suppressed because it is too large Load Diff

19101
po/lt.po

File diff suppressed because it is too large Load Diff

21146
po/ms.po

File diff suppressed because it is too large Load Diff

20578
po/nb.po

File diff suppressed because it is too large Load Diff

2199
po/nl.po

File diff suppressed because it is too large Load Diff

21066
po/pl.po

File diff suppressed because it is too large Load Diff

24677
po/pt.po

File diff suppressed because it is too large Load Diff

19937
po/pt_BR.po

File diff suppressed because it is too large Load Diff

20916
po/ro.po

File diff suppressed because it is too large Load Diff

19753
po/ru.po

File diff suppressed because it is too large Load Diff

20717
po/sk.po

File diff suppressed because it is too large Load Diff

19653
po/sl.po

File diff suppressed because it is too large Load Diff

19695
po/sr.po

File diff suppressed because it is too large Load Diff

20713
po/sv.po

File diff suppressed because it is too large Load Diff

19725
po/tr.po

File diff suppressed because it is too large Load Diff

20588
po/uk.po

File diff suppressed because it is too large Load Diff

19697
po/vi.po

File diff suppressed because it is too large Load Diff

19726
po/zh_CN.po

File diff suppressed because it is too large Load Diff

19125
po/zh_TW.po

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ e_about_new(void)
snprintf
(buf, sizeof(buf), "%s%s",
_(
"<title>Copyright &copy; 2000-2024, by the Enlightenment "
"<title>Copyright &copy; 2000-2022, by the Enlightenment "
"Development Team</><ps/>"
"<ps/>"
"We hope you enjoy using this software as much as we enjoyed "

View File

@ -3285,18 +3285,15 @@ ACT_FN_GO(window_focus, EINA_UNUSED)
}
if (dir == -1) /* next */
{
if (ec_next) goto do_focus;
else if (ec_first) ec_next = ec_first;
else return;
if (ec_next) e_client_focus_set_with_pointer(ec_next);
else if (ec_first) e_client_focus_set_with_pointer(ec_first);
}
else if (dir == -2)
{
if (ec_prev) ec_next = ec_prev;
else if (ec_last) ec_next = ec_last;
else return;
if (ec_prev) e_client_focus_set_with_pointer(ec_prev);
else if (ec_last) e_client_focus_set_with_pointer(ec_last);
}
else return;
goto do_focus;
return;
}
cx = ec_orig->x + (ec_orig->w / 2);
@ -3371,18 +3368,8 @@ ACT_FN_GO(window_focus, EINA_UNUSED)
ec_next = ec;
distance = d;
}
do_focus:
if (!ec_next) return;
ec = ec_next;
if (ec->iconic) e_client_uniconify(ec);
if (ec->shaded) e_client_unshade(ec, ec->shade_dir);
if (!ec->lock_user_stacking)
{
evas_object_raise(ec->frame);
e_client_raise_latest_set(ec);
}
e_client_focus_set_with_pointer(ec);
if (ec_next) e_client_focus_set_with_pointer(ec_next);
}
/* local subsystem globals */

View File

@ -27,9 +27,6 @@ static Eina_Bool _e_bl_suspend = EINA_FALSE;
static void _backlight_devices_device_set(Backlight_Device *bd, double val);
static void _backlight_devices_device_update(Backlight_Device *bd);
#define MAX_BL_DIFF 0.15
#define SET_RETRIES 5
static Eina_Bool
_backlight_retry_timer_cb(void *data)
{
@ -48,17 +45,17 @@ _backlight_mismatch_retry(Backlight_Device *bd)
((fabs(bd->expected_val - 1.0) < DBL_EPSILON) ||
(fabs(bd->expected_val - e_config->backlight.normal) < DBL_EPSILON) ||
(fabs(bd->expected_val - e_config->backlight.dim) < DBL_EPSILON)) &&
// and the delta between expected and val >= MAX_BL_DIFF
(fabs(bd->expected_val - bd->val) >= MAX_BL_DIFF) &&
// and we retried < SET_RETRIES times
(bd->retries < SET_RETRIES) &&
// and the delta between expected and val >= 0.05
(fabs(bd->expected_val - bd->val) >= 0.05) &&
// and we retried < 20 times
(bd->retries < 10) &&
(_own_vt))
{ // try again
printf("RETRY backlight set as %1.2f != %1.2f (expected) try=%i\n",
bd->val, bd->expected_val, bd->retries);
bd->retries++;
if (bd->retry_timer) ecore_timer_del(bd->retry_timer);
bd->retry_timer = ecore_timer_add(0.3, _backlight_retry_timer_cb, bd);
bd->retry_timer = ecore_timer_add(0.1, _backlight_retry_timer_cb, bd);
} // or give up
else bd->retries = 0;
}
@ -76,10 +73,10 @@ _backlight_system_get_cb(void *data, const char *params)
if (!!strcmp(bd->dev, dev)) return;
e_system_handler_del("bklight-val", _backlight_system_get_cb, bd);
fval = (double)val / 1000.0;
if (fabs(fval - bd->val) >= MAX_BL_DIFF)
if (fabs(fval - bd->val) >= DBL_EPSILON)
{
// bd->val = fval;
// ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
bd->val = fval;
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
_backlight_mismatch_retry(bd);
}
}
@ -100,10 +97,10 @@ _backlight_system_ddc_get_cb(void *data, const char *params)
if (val < 0) fval = -1.0;
else fval = (double)val / 100.0;
bd->ddc_max = max;
if ((fabs(fval - bd->val) >= MAX_BL_DIFF) || (val == -1))
if ((fabs(fval - bd->val) >= DBL_EPSILON) || (val == -1))
{
// bd->val = fval;
// ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
bd->val = fval;
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
_backlight_mismatch_retry(bd);
}
}
@ -794,7 +791,7 @@ e_backlight_level_set(E_Zone *zone, double val, double tim)
if (fabs(tim) < DBL_EPSILON)
{
_backlight_devices_device_set(bd, val);
// _backlight_devices_device_update(bd);
_backlight_devices_device_update(bd);
ecore_event_add(E_EVENT_BACKLIGHT_CHANGE, NULL, NULL, NULL);
return;
}

View File

@ -586,8 +586,6 @@ _e_client_free(E_Client *ec)
if (ec->stack.prev) ec->stack.prev->stack.next = ec->stack.next;
if (ec->stack.next) ec->stack.next->stack.prev = ec->stack.prev;
E_FREE_FUNC(ec->ignore_first_unmap_clear_timer, ecore_timer_del);
ec->e.state.profile.wait_desk = NULL;
evas_object_del(ec->frame);
E_OBJECT(ec)->references--;
@ -2298,29 +2296,6 @@ _e_client_eval(E_Client *ec)
}
}
}
if (!ec->desktop && ec->icccm.class)
{
const char *p = strchr(ec->icccm.class, ' ');
if (p)
{
char *sp, *dup = strdup(ec->icccm.class);
if (dup)
{
for (sp = dup; *dup; sp++)
{
if (*sp == ' ')
{
*sp = 0;
break;
}
}
ec->desktop = efreet_util_desktop_exec_find(dup);
free(dup);
}
}
}
if (!ec->desktop && ec->icccm.name)
{
/* this works for most cases as fallback. useful when app is
@ -4558,7 +4533,6 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
evas_object_layer_set(ec->frame, E_LAYER_CLIENT_FULLSCREEN);
ec->fullscreen = 1;
ec->fullscreen_time = ecore_time_get();
ec->unfullscreen_forced = 0;
#ifndef HAVE_WAYLAND_ONLY
if ((eina_list_count(e_comp->zones) > 1) ||

View File

@ -302,7 +302,6 @@ struct E_Client
unsigned char ignore_first_unmap;
E_Pointer_Mode resize_mode;
Ecore_Timer *ignore_first_unmap_clear_timer;
struct
{
@ -694,8 +693,6 @@ struct E_Client
int x, y;
} drag;
double fullscreen_time;
Ecore_Timer *raise_timer;
E_Client_Move_Intercept_Cb move_intercept_cb;
E_Remember *remember;

View File

@ -434,7 +434,6 @@ e_client_volume_object_add(E_Client *ec, Evas *evas)
if (edje_object_part_exists(bx, "e.swallow.volume"))
{
o = elm_slider_add(e_comp->elm);
elm_object_focus_allow_set(o, EINA_FALSE);
elm_slider_min_max_set(o, ec->volume_min,
ec->volume_max);
elm_slider_span_size_set(o, ec->volume_max

View File

@ -756,68 +756,6 @@ _e_comp_shapes_update_object_checker_function_thingy(Evas_Object *o)
return EINA_FALSE;
}
static Eina_Bool
_tiler_obj_visible(Evas_Object *o)
{
Evas_Object *o2;
if (!evas_object_visible_get(o)) return EINA_FALSE;
o2 = evas_object_clip_get(o);
if (!o2) return EINA_TRUE;
return _tiler_obj_visible(o2);
}
static void
_tiler_add_input_sub(Evas_Object *par, Eina_Tiler *tb)
{
Eina_List *objs = evas_object_smart_members_get(par);
Evas_Coord x, y, w, h;
Evas_Object *o;
const char *type;
void *sd;
EINA_LIST_FREE(objs, o)
{
if (evas_object_clipees_has(o)) continue;
if ((_tiler_obj_visible(o)) &&
(!evas_object_pass_events_get(o)))
{
type = evas_object_type_get(o);
if (type)
{
if (!strcmp(type, "rectangle"))
{
if (!evas_object_clipees_has(o))
{
evas_object_geometry_get(o, &x, &y, &w, &h);
eina_tiler_rect_add(tb, &(Eina_Rectangle){x, y, w, h});
}
}
else if ((!strcmp(type, "image")) ||
(!strcmp(type, "text")) ||
(!strcmp(type, "textblock"))
)
{
const char *name = evas_object_name_get(o);
evas_object_geometry_get(o, &x, &y, &w, &h);
if ((name) && (!strcmp(name, "cw->obj")))
eina_tiler_rect_del(tb, &(Eina_Rectangle){x, y, w, h});
else
eina_tiler_rect_add(tb, &(Eina_Rectangle){x, y, w, h});
}
else if ((!strcmp(type, "edje")) ||
(!strcmp(type, "e_zoomap")))
{
sd = evas_object_smart_data_get(o);
if (sd) _tiler_add_input_sub(o, tb);
}
}
}
}
}
static void
_e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb, Eina_List **rl)
{
@ -885,7 +823,6 @@ _e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb
eina_tiler_rect_del(tb, &(Eina_Rectangle){x, y, w, h});
SHAPE_INF("DEL: %d,%d@%dx%d", x, y, w, h);
}
_tiler_add_input_sub(ec->frame, tb);
return;
}
@ -912,8 +849,6 @@ _e_comp_shapes_update_comp_client_shape_comp_helper(E_Client *ec, Eina_Tiler *tb
eina_tiler_rect_del(tb, &(Eina_Rectangle){ec->client.x, ec->client.y, ec->client.w, ec->client.h});
SHAPE_INF("DEL: %d,%d@%dx%d", ec->client.x, ec->client.y, ec->client.w, ec->client.h);
}
_tiler_add_input_sub(ec->frame, tb);
}
static void

View File

@ -749,7 +749,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw)
else
edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
}
if ((cw->input_objs) || ((cw->ec) && (cw->ec->shaped)))
if (cw->input_objs)
evas_object_pass_events_set(cw->obj, 1);
else
evas_object_pass_events_set(cw->obj, 0);
@ -972,7 +972,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj)
}
if (e_object_is_del(E_OBJECT(ec))) return;
/* shaped clients get precise mouse events to handle transparent pixels */
evas_object_precise_is_inside_set(cw->obj, ec->shaped);
evas_object_precise_is_inside_set(cw->obj, ec->shaped || ec->shaped_input);
//INF("%p PX(%dx%d) EC(%dx%d) CW(%dx%d)", ec, pw, ph, ec->w, ec->h, cw->w, cw->h);
//e_comp_object_frame_wh_adjust(cw->smart_obj, pw, ph, &pw, &ph);

View File

@ -534,12 +534,59 @@ _e_comp_wl_evas_cb_multi_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *o
}
}
static void
_e_comp_wl_client_priority_adjust(int pid, int set, int adj, Eina_Bool use_adj, Eina_Bool adj_child, Eina_Bool do_child)
{
Eina_List *files;
char *file, buff[PATH_MAX];
FILE *f;
int pid2, ppid;
int num_read;
int n;
if (use_adj)
n = (getpriority(PRIO_PROCESS, pid) + adj);
else
n = set;
setpriority(PRIO_PROCESS, pid, n);
if (adj_child)
use_adj = EINA_TRUE;
if (!do_child) return;
files = ecore_file_ls("/proc");
EINA_LIST_FREE(files, file)
{
if (!isdigit(file[0]))
continue;
snprintf(buff, sizeof(buff), "/proc/%s/stat", file);
if ((f = fopen(buff, "r")))
{
pid2 = -1;
ppid = -1;
num_read = fscanf(f, "%i %*s %*s %i %*s", &pid2, &ppid);
fclose(f);
if (num_read == 2 && ppid == pid)
_e_comp_wl_client_priority_adjust(pid2, set,
adj, use_adj,
adj_child, do_child);
}
free(file);
}
}
static void
_e_comp_wl_client_priority_raise(E_Client *ec)
{
if (ec->netwm.pid <= 0) return;
if (ec->netwm.pid == getpid()) return;
e_pid_nice_priority_fg(ec->netwm.pid);
_e_comp_wl_client_priority_adjust(ec->netwm.pid,
e_config->priority - 1, -1,
EINA_FALSE, EINA_TRUE, EINA_FALSE);
}
static void
@ -547,7 +594,8 @@ _e_comp_wl_client_priority_normal(E_Client *ec)
{
if (ec->netwm.pid <= 0) return;
if (ec->netwm.pid == getpid()) return;
e_pid_nice_priority_bg(ec->netwm.pid);
_e_comp_wl_client_priority_adjust(ec->netwm.pid, e_config->priority, 1,
EINA_FALSE, EINA_TRUE, EINA_FALSE);
}
static Eina_Bool
@ -2881,7 +2929,7 @@ disp_err:
}
static Eina_Bool
_e_comp_wl_desklock_show(Eina_Bool immediate EINA_UNUSED)
_e_comp_wl_desklock_show(void)
{
return e_comp_grab_input(1, 1);
}

View File

@ -962,7 +962,7 @@ _e_comp_wl_clipboard_create(void)
E_API void
e_comp_wl_data_device_send_enter(E_Client *ec)
{
struct wl_resource *data_device_res = NULL, *offer_res = NULL;
struct wl_resource *data_device_res, *offer_res;
uint32_t serial;
int x, y;

View File

@ -77,7 +77,6 @@ static int screen_size_index = -1;
static Ecore_X_Atom backlight_atom = 0;
static Ecore_Timer *mouse_in_fix_check_timer = NULL;
static Ecore_Timer *_e_comp_x_blank_apply_timer = NULL;
static Eina_Hash *dead_wins;
@ -658,6 +657,58 @@ _e_comp_x_add_fail_job(void *d EINA_UNUSED)
"GPU to use OpenGL with compositing."));
}
static void
_pri_adj(int pid, int set, int adj, Eina_Bool use_adj, Eina_Bool adj_children, Eina_Bool do_children)
{
int newpri = set;
if (use_adj) newpri = getpriority(PRIO_PROCESS, pid) + adj;
setpriority(PRIO_PROCESS, pid, newpri);
// shouldn't need to do this as default ionice class is "none" (0), and
// this inherits io priority FROM nice level
// ioprio_set(IOPRIO_WHO_PROCESS, pid,
// IOPRIO_PRIO_VALUE(2, 5));
if (do_children)
{
Eina_List *files;
char *file, buf[PATH_MAX];
FILE *f;
int pid2, ppid;
// yes - this is /proc specific... so this may not work on some
// os's - works on linux. too bad for others.
files = ecore_file_ls("/proc");
EINA_LIST_FREE(files, file)
{
if (isdigit(file[0]))
{
snprintf(buf, sizeof(buf), "/proc/%s/stat", file);
f = fopen(buf, "r");
if (f)
{
pid2 = -1;
ppid = -1;
if (fscanf(f, "%i %*s %*s %i %*s", &pid2, &ppid) == 2)
{
fclose(f);
if (ppid == pid)
{
if (adj_children)
_pri_adj(pid2, set, adj, EINA_TRUE,
adj_children, do_children);
else
_pri_adj(pid2, set, adj, use_adj,
adj_children, do_children);
}
}
else fclose(f);
}
}
free(file);
}
}
}
static E_Client *
_e_comp_x_client_find_by_alarm(Ecore_X_Sync_Alarm al)
{
@ -902,7 +953,12 @@ _e_comp_x_client_pri_raise(E_Client *ec)
{
if (ec->netwm.pid <= 0) return;
if (ec->netwm.pid == getpid()) return;
e_pid_nice_priority_fg(ec->netwm.pid);
_pri_adj(ec->netwm.pid,
e_config->priority - 1, -1, EINA_FALSE,
// EINA_TRUE, EINA_TRUE);
EINA_TRUE, EINA_FALSE);
// printf("WIN: pid %i, title %s (HI!!!!!!!!!!!!!!!!!!)\n",
// ec->netwm.pid, e_client_util_name_get(ec));
}
static void
@ -910,7 +966,12 @@ _e_comp_x_client_pri_norm(E_Client *ec)
{
if (ec->netwm.pid <= 0) return;
if (ec->netwm.pid == getpid()) return;
e_pid_nice_priority_bg(ec->netwm.pid);
_pri_adj(ec->netwm.pid,
e_config->priority, 1, EINA_FALSE,
// EINA_TRUE, EINA_TRUE);
EINA_TRUE, EINA_FALSE);
// printf("WIN: pid %i, title %s (NORMAL)\n",
// ec->netwm.pid, e_client_util_name_get(ec));
}
static void
@ -2449,7 +2510,6 @@ _e_comp_x_mapping_change(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_E
E_Client *ec;
if (_e_comp_x_mapping_change_disabled) return ECORE_CALLBACK_RENEW;
printf("COMPX: _e_comp_x_mapping_change\n");
e_comp_canvas_keys_ungrab();
EINA_LIST_FOREACH(e_comp->clients, l, ec)
{
@ -2541,60 +2601,34 @@ _e_comp_x_powersave(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
static void
_e_comp_x_mouse_in_job(void *d EINA_UNUSED)
{
E_Client *ecf = e_client_focused_get();
// if we're fullscreen and see a mout out within a short time of having
// set this client ot fullscreen - it's a "false flag" that is a bi-product
// of things moving around while becoming fullscreen, so ignore it
if ((ecf) && (ecf != mouse_client))
{
if ((ecf->fullscreen) &&
(ecore_time_get() - ecf->fullscreen_time) < 0.2) // 0.2sec enough
goto done;
}
if (mouse_client)
e_client_mouse_in(mouse_client, e_comp_canvas_x_root_adjust(mouse_in_coords.x), e_comp_canvas_y_root_adjust(mouse_in_coords.y));
done:
mouse_in_job = NULL;
}
static E_Client *
_e_comp_x_e_client_obj_get(Evas_Object *o)
{
Evas_Object *par;
if (evas_object_data_get(o, "comp_object"))
return e_comp_object_client_get(o);
par = evas_object_smart_parent_get(o);
if (!par) return NULL;
return _e_comp_x_e_client_obj_get(par);
}
static Eina_Bool
_e_comp_x_mouse_in_fix_check_timer_cb(void *data EINA_UNUSED)
{
E_Client *ec = NULL;
Eina_List *l, *in_list;
Evas_Object *o;
E_Client *ec = NULL, *cec;
int x, y;
mouse_in_fix_check_timer = NULL;
if (e_grabinput_key_win_get() || e_grabinput_mouse_win_get())
return EINA_FALSE;
ecore_evas_pointer_xy_get(e_comp->ee, &x, &y);
in_list = evas_tree_objects_at_xy_get(e_comp->evas, NULL, x, y);
EINA_LIST_FOREACH(in_list, l, o)
E_CLIENT_REVERSE_FOREACH(cec)
{
ec = _e_comp_x_e_client_obj_get(o);
if (ec)
{
if ((!e_client_util_desk_visible
(ec, e_desk_current_get(e_zone_current_get())))) continue;
break;
}
/* If a border was specified which should be excluded from the list
* (because it will be closed shortly for example), skip */
if ((!e_client_util_desk_visible(cec, e_desk_current_get(e_zone_current_get())))) continue;
if (!evas_object_visible_get(cec->frame)) continue;
if (!E_INSIDE(x, y, cec->x, cec->y, cec->w, cec->h))
continue;
/* If the layer is higher, the position of the window is higher
* (always on top vs always below) */
if (!ec || (cec->layer > ec->layer))
ec = cec;
}
eina_list_free(in_list);
if (ec)
{
mouse_client = ec;
@ -2656,12 +2690,6 @@ _e_comp_x_mouse_out(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_
return ECORE_CALLBACK_PASS_ON;
ec = _e_comp_x_client_find_by_window(ev->win);
if (!ec) return ECORE_CALLBACK_RENEW;
// if we're fullscreen and see a mout out within a short time of having
// set this client ot fullscreen - it's a "false flag" that is a bi-product
// of things moving around while becoming fullscreen, so ignore it
if ((ec->fullscreen) &&
(ecore_time_get() - ec->fullscreen_time) < 0.2) // 0.2sec enough
return ECORE_CALLBACK_RENEW;
if (_e_comp_x_client_data_get(ec)->deleted) return ECORE_CALLBACK_RENEW;
if (mouse_client == ec)
{
@ -3439,41 +3467,6 @@ _e_comp_x_hook_client_post_new_client(void *d EINA_UNUSED, E_Client *ec)
}
}
static void
_e_comp_x_frame_extents_adjust(E_Client *ec, int exl, int exr, int ext, int exb)
{
unsigned int extentscurrent;
unsigned int extentsall = exl | exr | ext | exb;
int insl = 0, insr = 0, inst = 0, insb = 0;
e_comp_object_frame_geometry_get(ec->frame, &insl, &insr, &inst, &insb);
extentscurrent = insl | insr | inst | insb;
extentsall = !!extentsall;
extentscurrent = !!extentscurrent;
if ((!e_comp_object_frame_exists(ec->frame)) &&
(( extentsall && extentscurrent) ||
(!extentsall && extentscurrent) ||
( extentsall && !extentscurrent)))
{
e_comp_object_frame_geometry_set(ec->frame, -exl, -exr, -ext, -exb);
if (ec->override &&
(ec->x == ec->comp_data->initial_attributes.x) &&
(ec->y == ec->comp_data->initial_attributes.y))
e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &ec->x, &ec->y);
}
}
static Eina_Bool
_cb_e_comp_x_ignore_first_unmap_clear_timer(void *data)
{
E_Client *ec = data;
ec->ignore_first_unmap_clear_timer = NULL;
if (ec->ignore_first_unmap > 0) ec->ignore_first_unmap--;
return EINA_FALSE;
}
static void
_e_comp_x_hook_client_pre_frame_assign(void *d EINA_UNUSED, E_Client *ec)
{
@ -3526,9 +3519,6 @@ _e_comp_x_hook_client_pre_frame_assign(void *d EINA_UNUSED, E_Client *ec)
if (!ec->internal)
ecore_x_window_save_set_add(win);
ec->ignore_first_unmap++;
E_FREE_FUNC(ec->ignore_first_unmap_clear_timer, ecore_timer_del);
ec->ignore_first_unmap_clear_timer = ecore_timer_add
(0.2, _cb_e_comp_x_ignore_first_unmap_clear_timer, ec);
ecore_x_window_reparent(win, pwin, 0, 0);
e_pixmap_alias(ep, E_PIXMAP_TYPE_X, pwin);
@ -4855,18 +4845,34 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec)
*/
if (count >= 4)
{
// printf("GTK-FRM: get %i %i %i %i\n",
// extents[0], extents[1], extents[2], extents[3]);
_e_comp_x_frame_extents_adjust
(ec, extents[0], extents[1], extents[2], extents[3]);
unsigned int extentscurrent;
unsigned int extentsall =
extents[0] | extents[1] | extents[2] | extents[3];
int insl = 0, insr = 0, inst = 0, insb = 0;
e_comp_object_frame_geometry_get(ec->frame, &insl, &insr,
&inst, &insb);
extentscurrent = insl | insr | inst | insb;
extentsall = !!extentsall;
extentscurrent = !!extentscurrent;
if ((!e_comp_object_frame_exists(ec->frame)) &&
(( extentsall && extentscurrent) ||
(!extentsall && extentscurrent) ||
( extentsall && !extentscurrent)))
{
e_comp_object_frame_geometry_set(ec->frame,
-extents[0],
-extents[1],
-extents[2],
-extents[3]);
if (ec->override &&
(ec->x == ec->comp_data->initial_attributes.x) &&
(ec->y == ec->comp_data->initial_attributes.y))
e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &ec->x, &ec->y);
}
}
free(extents);
}
else
{
// printf("GTK-FRM: get fail\n");
_e_comp_x_frame_extents_adjust(ec, 0, 0, 0, 0);
}
cd->fetch_gtk_frame_extents = 0;
}
ec->changes.prop = 0;
@ -5194,11 +5200,6 @@ _e_comp_x_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
else
#endif
{
// work around broken clients that withdraw windows and don't
// remove WM_STATE themselves... like qt6 + telegram and media
// window popups.
ecore_x_window_prop_property_del(e_client_util_win_get(ec),
ECORE_X_ATOM_WM_STATE);
if (e_pixmap_free(ec->pixmap))
e_pixmap_client_set(ec->pixmap, NULL);
ec->pixmap = NULL;
@ -5326,7 +5327,6 @@ _e_comp_cb_pointer_suspend_resume_done(void *data, Evas_Object *obj, const char
e_pointer_grab_set(e_comp->pointer, EINA_FALSE);
}
e_screensaver_update();
e_dpms_force_update();
}
EINTERN Eina_Bool
@ -5381,7 +5381,6 @@ _e_comp_x_screensaver_off()
const char *s;
e_screensaver_update();
e_dpms_force_update();
_e_comp_pointer_ungrab();
e_pointer_grab_set(e_comp->pointer, EINA_FALSE);
if ((!e_comp->pointer) || (!e_comp->pointer->o_ptr)) return ECORE_CALLBACK_RENEW;
@ -5762,9 +5761,6 @@ _e_comp_x_manage_windows(void)
evas_object_geometry_set(ec->frame, ec->client.x, ec->client.y, ec->client.w, ec->client.h);
}
ec->ignore_first_unmap = 1;
E_FREE_FUNC(ec->ignore_first_unmap_clear_timer, ecore_timer_del);
ec->ignore_first_unmap_clear_timer = ecore_timer_add
(0.2, _cb_e_comp_x_ignore_first_unmap_clear_timer, ec);
if (ec->override || (!ec->icccm.fetch.hints))
evas_object_show(ec->frame);
_e_comp_x_client_stack(ec);
@ -5827,7 +5823,7 @@ _e_comp_x_desklock_hide(void)
}
static Eina_Bool
_e_comp_x_desklock_show(Eina_Bool immedate EINA_UNUSED)
_e_comp_x_desklock_show(void)
{
if (!e_comp_grab_input(1, 1))
{
@ -6034,13 +6030,6 @@ _e_comp_x_screens_setup(void)
return EINA_FALSE;
}
static Eina_Bool
_e_comp_x_blank_apply(void *data EINA_UNUSED)
{
e_screensaver_force_update();
return EINA_TRUE;
}
E_API Eina_Bool
e_comp_x_init(void)
{
@ -6208,8 +6197,6 @@ e_comp_x_init(void)
e_config->screensaver_blanking,
e_config->screensaver_expose);
e_comp_x_devices_config_apply(EINA_FALSE);
_e_comp_x_blank_apply_timer = ecore_timer_add
(10.0, _e_comp_x_blank_apply, NULL);
}
else
e_dnd_init();
@ -6220,11 +6207,6 @@ e_comp_x_init(void)
E_API void
e_comp_x_shutdown(void)
{
if (_e_comp_x_blank_apply_timer)
{
ecore_timer_del(_e_comp_x_blank_apply_timer);
_e_comp_x_blank_apply_timer = NULL;
}
_e_comp_x_del(e_comp);
E_FREE_LIST(handlers, ecore_event_handler_del);
E_FREE_FUNC(clients_win_hash, eina_hash_free);

View File

@ -144,44 +144,11 @@ _handle_dev_prop(int dev_slot, const char *dev, const char *prop, Device_Flags d
}
free(val);
}
else if (!strcmp(prop, "libinput Accel Profile Enabled"))
{
// 1 bool, 0 = adaptive, 1 = flat
unsigned char cfval = 0;
unsigned char *val = ecore_x_input_device_property_get
(dev_slot, prop, &num, &fmt, &size);
if (dev_flags == DEVICE_FLAG_TOUCHPAD)
cfval = e_config->touch_flat_accel;
else
cfval = e_config->mouse_flat_accel;
if ((val) && (size == 8) && (num == 2) && (((cfval == 1) && (val[0] == 1)) ||
((cfval == 0) && (val[0] == 0))))
{
// Does a little flip-flop for each variable
val[0] = !cfval;
val[1] = cfval;
printf("DEV: change [%s] [%s] -> %i, %i\n", dev, prop, val[0], val[1]);
ecore_x_input_device_property_set
(dev_slot, prop, val, num, fmt, size);
}
free(val);
}
else if (!strcmp(prop, "libinput High Resolution Wheel Scroll Enabled"))
{
unsigned char cfval = e_config->mouse_hires_scroll;
unsigned char *val = ecore_x_input_device_property_get
(dev_slot, prop, &num, &fmt, &size);
if ((val) && (size == 8) && (num == 1) && (cfval != val[0]))
{
val[0] = cfval;
printf("DEV: change [%s] [%s] -> %i\n", dev, prop, val[0]);
ecore_x_input_device_property_set
(dev_slot, prop, val, num, fmt, size);
}
free(val);
}
// not for now - default
// else if (!strcmp(prop, "libinput Accel Profile Enabled"))
// {
// // 1 bool, 0 = adaptive, 1 = flat
// }
// do via button mapping for now - not sure about this evdev can't do this
// else if (!strcmp(prop, "libinput Left Handed Enabled"))
// {
@ -233,35 +200,28 @@ _handle_dev_prop(int dev_slot, const char *dev, const char *prop, Device_Flags d
{
// 7 val, 8 bit bit 0 = off, >0 mouse button reported
// TR, BR, TL, BL, F1, F2, F3
// 1, 1, 1, 0, 1, 3, 2 <- tap to click
// 0, 0, 0, 0, 1, 2, 3 <- tap to click
unsigned char *val = ecore_x_input_device_property_get
(dev_slot, prop, &num, &fmt, &size);
const char tapval[7] = { 1, 1, 1, 0, 1, 3, 2 };
const char notapval[7] = { 0, 0, 0, 0, 0, 0, 0 };
Eina_Bool have_tapval = EINA_FALSE;
Eina_Bool have_notapval = EINA_FALSE;
int i;
if (num >= 7)
{
have_tapval = EINA_TRUE;
for (i = 0; i < 7; i++) if (val[i] != tapval[i]) have_tapval = EINA_FALSE;
have_notapval = EINA_TRUE;
for (i = 0; i < 7; i++) if (val[i] != notapval[i]) have_notapval = EINA_FALSE;
}
if ((val) && (size == 8) && (num >= 7) &&
(((e_config->touch_tap_to_click) && (!have_tapval)) ||
((!e_config->touch_tap_to_click) && (!have_notapval))))
(((e_config->touch_tap_to_click) &&
((val[4] != 1) || (val[5] != 2) || (val[6] != 3))) ||
((!e_config->touch_tap_to_click) &&
((val[4] != 0) || (val[5] != 0) || (val[6] != 0)))))
{
if (e_config->touch_tap_to_click)
{
for (i = 0; i < 7; i++) val[i] = tapval[i];
val[4] = 1;
val[5] = 2;
val[6] = 3;
}
else
{
for (i = 0; i < 7; i++) val[i] = notapval[i];
val[4] = 0;
val[5] = 0;
val[6] = 0;
}
printf("DEV: change [%s] [%s] -> %i %i %i %i %i %i %i\n", dev, prop, val[0], val[1], val[2], val[3], val[4], val[5], val[6]);
printf("DEV: change [%s] [%s] -> %i %i %i\n", dev, prop, val[4], val[5], val[6]);
ecore_x_input_device_property_set
(dev_slot, prop, val, num, fmt, size);
}

View File

@ -20,7 +20,6 @@ static Eina_Bool _rotation_exists(int rot, Ecore_X_Randr_Crtc_Info *info);
static Ecore_X_Randr_Mode _mode_screen_find(Ecore_X_Window root, E_Randr2_Screen *s, Ecore_X_Randr_Output out);
static Eina_List *handlers;
static int use_xrandr = -1;
E_Comp_Screen_Iface xiface =
{
@ -502,168 +501,9 @@ e_comp_x_randr_shutdown(void)
E_FREE_LIST(handlers, ecore_event_handler_del);
}
static void
_e_comp_xrandr_cmd(void)
E_API void
e_comp_x_randr_config_apply(void)
{
Eina_List *l;
E_Randr2_Screen *s;
Ecore_X_Window root = ecore_x_window_root_first_get();
int top_priority = 0;
Ecore_X_Randr_Crtc *crtcs = NULL;
Ecore_X_Randr_Output *outputs = NULL, out, *outconf;
E_Randr2_Screen **screenconf;
Ecore_X_Randr_Crtc_Info *info;
int crtcs_num = 0, outputs_num = 0, i, numout;
crtcs = ecore_x_randr_crtcs_get(root, &crtcs_num);
outputs = ecore_x_randr_outputs_get(root, &outputs_num);
printf("RRR: crtcs=%p outputs=%p\n", crtcs, outputs);
if ((crtcs) && (outputs))
{
outconf = alloca(outputs_num * sizeof(Ecore_X_Randr_Output));
screenconf = alloca(outputs_num * sizeof(E_Randr2_Screen *));
memset(outconf, 0, outputs_num * sizeof(Ecore_X_Randr_Output));
memset(screenconf, 0, outputs_num * sizeof(E_Randr2_Screen *));
// decide which outputs get which crtcs
EINA_LIST_FOREACH(e_randr2->screens, l, s)
{
printf("RRR: find output for '%s'\n", s->info.name);
// XXX: find clones and set them as outputs in an array
if ((s->config.configured) &&
(_output_name_find(root, s->info.name, outputs,
outputs_num, &out)))
{
printf("RRR: enabled: %i\n", s->config.enabled);
if (s->config.enabled)
{
if (s->config.priority > top_priority)
top_priority = s->config.priority;
for (i = 0; i < outputs_num; i++)
{
if (!screenconf[i])
{
Ecore_X_Randr_Crtc crtc =
ecore_x_randr_output_crtc_get(root,
outputs[i]);
info = NULL;
printf("RRR: crtc slot empty: %i, crtc=%i, output=%i\n", i, crtc, outputs[i]);
if (crtc)
info = ecore_x_randr_crtc_info_get(root,
crtc);
printf("RRR: crtc info = %p\n", info);
if (info)
{
printf("RRR: output exists=%i rot exists=%i\n",
_output_exists(out, info), _rotation_exists(s->config.rotation, info));
if (_output_exists(out, info) &&
_rotation_exists(s->config.rotation,
info))
{
printf("RRR: assign slot out: %x\n", out);
outconf[i] = out;
screenconf[i] = s;
}
ecore_x_randr_crtc_info_free(info);
}
if (!screenconf[i])
{
printf("RRR: assign slot off\n");
outconf[i] = 0;
screenconf[i] = s;
}
break;
}
}
}
else
{
for (i = 0; i < outputs_num; i++)
{
if (!screenconf[i])
{
printf("RRR: assign slot off 2\n");
outconf[i] = 0;
screenconf[i] = s;
break;
}
}
}
}
}
numout = 0;
for (i = 0; i < outputs_num; i++)
{
if (screenconf[i]) numout++;
}
if (numout)
{
Eina_Strbuf *sb;
E_Randr2_Screen *sc;
sb = eina_strbuf_new();
eina_strbuf_append(sb, "xrandr ");
// set up a crtc to drive each output (or not)
for (i = 0; i < numout; i++)
{
sc = screenconf[i];
if (!sc) continue;
if (!sc->info.name) continue;
eina_strbuf_append_printf(sb, "--output '%s' ",
sc->info.name);
// XXX: find clones and set them as outputs in an array
if (outconf[i])
{
eina_strbuf_append_printf(sb, "--mode %ix%i ",
sc->config.mode.w,
sc->config.mode.h);
eina_strbuf_append_printf(sb, "--refresh %i.%02i ",
(int)sc->config.mode.refresh,
(int)((sc->config.mode.refresh - (int)sc->config.mode.refresh) * 100));
eina_strbuf_append_printf(sb, "--rotate ");
if (screenconf[i]->config.rotation == 0)
eina_strbuf_append_printf(sb, "normal ");
else if (screenconf[i]->config.rotation == 90)
eina_strbuf_append_printf(sb, "left ");
else if (screenconf[i]->config.rotation == 180)
eina_strbuf_append_printf(sb, "inverted ");
else if (screenconf[i]->config.rotation == 270)
eina_strbuf_append_printf(sb, "right ");
eina_strbuf_append_printf(sb, "--pos %ix%i ",
sc->config.geom.x,
sc->config.geom.y);
if (screenconf[i]->config.priority == top_priority)
{
eina_strbuf_append_printf(sb, "--primary ");
top_priority = -1;
}
}
else
{
printf("RRR: crtc off: %i\n", i);
eina_strbuf_append_printf(sb, "--off ");
}
}
printf("RRR: XRANDR: %s\n", eina_strbuf_string_get(sb));
ecore_exe_run(eina_strbuf_string_get(sb), NULL);
eina_strbuf_free(sb);
}
else
{
printf("RRR: EERRRRRROOOORRRRRRR no outputs to configure!\n");
ecore_timer_add(5.0, _cb_no_outputs_timer, NULL);
ecore_x_root_screen_barriers_set(NULL, 0);
}
}
free(outputs);
free(crtcs);
}
static void
_e_comp_xrandr_ecore_x(void)
{
Eina_List *l;
E_Randr2_Screen *s;
Ecore_X_Window root = ecore_x_window_root_first_get();
@ -708,13 +548,12 @@ _e_comp_xrandr_ecore_x(void)
crtcs = ecore_x_randr_crtcs_get(root, &crtcs_num);
outputs = ecore_x_randr_outputs_get(root, &outputs_num);
printf("RRR: crtcs=%p outputs=%p\n", crtcs, outputs);
if ((crtcs) && (outputs))
{
outconf = alloca(outputs_num * sizeof(Ecore_X_Randr_Output));
screenconf = alloca(outputs_num * sizeof(E_Randr2_Screen *));
memset(outconf, 0, outputs_num * sizeof(Ecore_X_Randr_Output));
memset(screenconf, 0, outputs_num * sizeof(E_Randr2_Screen *));
outconf = alloca(crtcs_num * sizeof(Ecore_X_Randr_Output));
screenconf = alloca(crtcs_num * sizeof(E_Randr2_Screen *));
memset(outconf, 0, crtcs_num * sizeof(Ecore_X_Randr_Output));
memset(screenconf, 0, crtcs_num * sizeof(E_Randr2_Screen *));
// decide which outputs get which crtcs
EINA_LIST_FOREACH(e_randr2->screens, l, s)
@ -730,7 +569,7 @@ _e_comp_xrandr_ecore_x(void)
{
if (s->config.priority > top_priority)
top_priority = s->config.priority;
for (i = 0; i < outputs_num; i++)
for (i = 0; i < crtcs_num; i++)
{
if (!outconf[i])
{
@ -757,18 +596,18 @@ _e_comp_xrandr_ecore_x(void)
}
}
numout = 0;
for (i = 0; i < outputs_num; i++)
for (i = 0; i < crtcs_num; i++)
{
if (outconf[i]) numout++;
}
if (numout)
{
Ecore_X_Rectangle *scrs = alloca(numout * sizeof(Ecore_X_Rectangle));
Ecore_X_Rectangle *scrs = alloca(crtcs_num * sizeof(Ecore_X_Rectangle));
int scrs_num;
scrs_num = 0;
// set up a crtc to drive each output (or not)
for (i = 0; i < numout; i++)
for (i = 0; i < crtcs_num; i++)
{
// XXX: find clones and set them as outputs in an array
if (outconf[i])
@ -798,7 +637,7 @@ _e_comp_xrandr_ecore_x(void)
screenconf[i]->config.geom.x,
screenconf[i]->config.geom.y,
mode, orient))
printf("RRR: failed to set crtc!!!!!!\n");
printf("RRR: failed to set crtc!!!!!!\n");
if (E_INSIDE(px, py,
screenconf[i]->config.geom.x,
screenconf[i]->config.geom.y,
@ -850,7 +689,7 @@ _e_comp_xrandr_ecore_x(void)
free(outputs);
free(crtcs);
printf("RRR: set vsize2: %ix%i\n", nw, nh);
printf("RRR: set vsize: %ix%i\n", nw, nh);
ecore_x_randr_screen_current_size_set(root, nw, nh, -1, -1);
{
int dww = 0, dhh = 0, dww2 = 0, dhh2 = 0;
@ -865,6 +704,7 @@ _e_comp_xrandr_ecore_x(void)
ecore_x_randr_screen_size_range_get(root, NULL, NULL, NULL, NULL);
ecore_x_ungrab();
ecore_x_sync();
// ignore the next batch of randr events - we caused them ourselves
// XXX: a problem. thew first time we configure the screen we may not
// get any events back to clear the ignore flag below, so only apply
@ -872,22 +712,6 @@ _e_comp_xrandr_ecore_x(void)
// event_ignore = EINA_TRUE;
}
E_API void
e_comp_x_randr_config_apply(void)
{
if (e_randr2_cfg->use_cmd)
{
if (use_xrandr == -1)
{
if (ecore_file_app_installed("xrandr")) use_xrandr = 1;
else use_xrandr = 0;
}
}
else use_xrandr = 0;
if (use_xrandr == 1) _e_comp_xrandr_cmd();
else _e_comp_xrandr_ecore_x();
}
E_API Eina_Bool
e_comp_x_randr_available(void)
{

View File

@ -122,24 +122,6 @@ _e_config_profile_name_get(Eet_File *ef)
s = eina_stringshare_add_length(data, data_len);
free(data);
}
if (s)
{
char buf[PATH_MAX];
char buf2[PATH_MAX];
e_user_dir_snprintf(buf, sizeof(buf), "config/%s", s);
if (!ecore_file_is_dir(buf))
{
snprintf(buf2, sizeof(buf2), "config/%s", s);
e_prefix_data_concat_static(buf, buf2);
if (!ecore_file_is_dir(buf))
{
printf("CF: warning - profile [%s] dir does not exist in user or system dirs\n", s);
eina_stringshare_del(s);
s = NULL;
}
}
}
return s;
}
@ -190,7 +172,7 @@ _e_config_pending_file_del(const char *path)
eina_hash_del(_e_config_pending_files, path, ef);
eina_lock_release(&_e_config_pending_files_lock);
err = eet_sync_sync(ef);
err = eet_close(ef);
switch (err)
{
case EET_ERROR_NONE:
@ -255,7 +237,6 @@ _e_config_pending_file_del(const char *path)
erstr = _("The error is unknown to Enlightenment.");
break;
}
eet_close(ef);
if (!ok) printf("CF: Write Error: %s\n", erstr);
}
else
@ -750,7 +731,6 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, winlist_list_size, DOUBLE); /**/
E_CONFIG_VAL(D, T, winlist_large_size, DOUBLE); /**/
E_CONFIG_VAL(D, T, winlist_list_no_miniatures, UCHAR); /**/
E_CONFIG_VAL(D, T, no_state_hidden_desktop, UCHAR); /**/
E_CONFIG_VAL(D, T, maximize_policy, INT); /**/
E_CONFIG_VAL(D, T, allow_manip, INT); /**/
E_CONFIG_VAL(D, T, border_fix_on_shelf_toggle, INT); /**/
@ -856,10 +836,8 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, mouse_hand, INT);
E_CONFIG_VAL(D, T, mouse_accel, DOUBLE);
E_CONFIG_VAL(D, T, mouse_flat_accel, UCHAR);
E_CONFIG_VAL(D, T, mouse_accel_threshold, INT);
E_CONFIG_VAL(D, T, mouse_natural_scroll, UCHAR);
E_CONFIG_VAL(D, T, mouse_hires_scroll, UCHAR);
E_CONFIG_VAL(D, T, mouse_emulate_middle_button, UCHAR);
E_CONFIG_VAL(D, T, touch_accel, DOUBLE);
@ -867,7 +845,6 @@ _e_config_edd_init(Eina_Bool old)
E_CONFIG_VAL(D, T, touch_emulate_middle_button, UCHAR);
E_CONFIG_VAL(D, T, touch_tap_to_click, UCHAR);
E_CONFIG_VAL(D, T, touch_clickpad, UCHAR);
E_CONFIG_VAL(D, T, touch_flat_accel, UCHAR);
E_CONFIG_VAL(D, T, touch_scrolling_2finger, UCHAR);
E_CONFIG_VAL(D, T, touch_scrolling_edge, UCHAR);
E_CONFIG_VAL(D, T, touch_scrolling_circular, UCHAR);
@ -1068,24 +1045,19 @@ e_config_init(void)
for (i = 1; i <= _e_config_revisions; i++)
{
e_user_dir_snprintf(buf, sizeof(buf), "config/profile.cfg.%i", i);
e_user_dir_snprintf(buf, sizeof(buf), "config/profile.%i.cfg", i);
ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef)
{
printf("CF: warning - falling back to %s\n", buf);
_e_config_profile = _e_config_profile_name_get(ef);
eet_close(ef);
ef = NULL;
if (_e_config_profile) break;
printf("CF: warning - fallback to %s can't read profile\n", buf);
}
else if (ecore_file_exists(buf))
printf("CF: warning - fallback to %s failing to open\n", buf);
}
if (!_e_config_profile)
{
/* use system if no user profile config */
printf("CF: fallback to system profile config file\n");
e_prefix_data_concat_static(buf, "data/config/profile.cfg");
ef = eet_open(buf, EET_FILE_MODE_READ);
}
@ -1095,8 +1067,6 @@ e_config_init(void)
_e_config_profile = _e_config_profile_name_get(ef);
eet_close(ef);
ef = NULL;
if (!_e_config_profile)
printf("CF: warning - can't read profile\n");
}
if (!_e_config_profile)
{
@ -1657,10 +1627,52 @@ e_config_load(void)
e_config_save_queue();
}
CONFIG_VERSION_CHECK(22)
{ // added luncher - not around anymore
{
Eina_List *l;
E_Config_Module *em, *module;
Eina_Bool ibar_en = EINA_FALSE, luncher_en = EINA_FALSE;
CONFIG_VERSION_UPDATE_INFO(22);
EINA_LIST_FOREACH(e_config->modules, l, em)
{
if (!em->enabled) continue;
if (eina_streq(em->name, "ibar"))
ibar_en = EINA_TRUE;
else if (eina_streq(em->name, "luncher"))
luncher_en = EINA_TRUE;
}
if (ibar_en && !luncher_en)
{
module = E_NEW(E_Config_Module, 1);
module->name = eina_stringshare_add("luncher");
module->enabled = 1;
e_config->modules = eina_list_append(e_config->modules, module);
}
e_config_save_queue();
}
CONFIG_VERSION_CHECK(23)
{ // added sysinfo - not around anymore
{
Eina_List *l;
E_Config_Module *em, *module;
Eina_Bool sysinfo_en = EINA_FALSE;
CONFIG_VERSION_UPDATE_INFO(23);
EINA_LIST_FOREACH(e_config->modules, l, em)
{
if (!em->enabled) continue;
if (eina_streq(em->name, "sysinfo"))
sysinfo_en = EINA_TRUE;
}
if (!sysinfo_en)
{
module = E_NEW(E_Config_Module, 1);
module->name = eina_stringshare_add("sysinfo");
module->enabled = 1;
e_config->modules = eina_list_append(e_config->modules, module);
}
e_config_save_queue();
}
CONFIG_VERSION_CHECK(24)
{
@ -1805,14 +1817,6 @@ e_config_load(void)
e_config->backlight.ddc = 1;
e_config_save_queue();
}
CONFIG_VERSION_CHECK(36)
{
CONFIG_VERSION_UPDATE_INFO(36);
e_config->mouse_flat_accel = 0;
e_config->mouse_hires_scroll = 1;
e_config->touch_flat_accel = 0;
e_config_save_queue();
}
}
elm_config_profile_set(_e_config_profile);
if (!e_config->remember_internal_fm_windows)
@ -2213,21 +2217,16 @@ e_config_domain_load(const char *domain, E_Config_DD *edd)
for (i = 1; i <= _e_config_revisions; i++)
{
e_user_dir_snprintf(buf, sizeof(buf), "config/%s/%s.cfg.%i",
e_user_dir_snprintf(buf, sizeof(buf), "config/%s/%s.%i.cfg",
_e_config_profile, domain, i);
ef = eet_open(buf, EET_FILE_MODE_READ);
if (ef)
{
printf("CF: warning - falling back to %s\n", buf);
data = eet_data_read(ef, edd, "config");
eet_close(ef);
if (data) return data;
printf("CF: warning - fallback to %s can't read config\n", buf);
}
else if (ecore_file_exists(buf))
printf("CF: warning - fallback to %s failing to open\n", buf);
}
printf("CF: fallback to system config config file for [%s]\n", domain);
return e_config_domain_system_load(domain, edd);
}
@ -2247,7 +2246,6 @@ e_config_domain_system_load(const char *domain, E_Config_DD *edd)
eet_close(ef);
return data;
}
printf("CF: system config load for %s failed\n", buf);
return data;
}

View File

@ -135,7 +135,6 @@ struct _E_Config
double winlist_list_size; // GUI
double winlist_large_size; // GUI
Eina_Bool winlist_list_no_miniatures; // GUI
Eina_Bool no_state_hidden_desktop; // GUI
int maximize_policy; // GUI
int allow_manip; // GUI
int border_fix_on_shelf_toggle; // GUI
@ -246,15 +245,12 @@ struct _E_Config
int mouse_hand; //GUI
double mouse_accel; // GUI
int mouse_accel_threshold; // GUI
unsigned char mouse_flat_accel; // GUI
unsigned char mouse_natural_scroll; // GUI
unsigned char mouse_hires_scroll; // GUI
unsigned char mouse_emulate_middle_button; // GUI
double touch_accel; // GUI
unsigned char touch_natural_scroll; // GUI
unsigned char touch_emulate_middle_button; // GUI
unsigned char touch_flat_accel; // GUI
unsigned char touch_tap_to_click; // GUI
unsigned char touch_clickpad; // GUI
unsigned char touch_scrolling_2finger; // GUI

View File

@ -434,13 +434,16 @@ e_dbusmenu_item_unref(E_DBusMenu_Item *m)
E_API void
e_dbusmenu_unload(E_DBusMenu_Ctx *ctx)
{
Eldbus_Connection *conn;
Eldbus_Object *obj;
EINA_SAFETY_ON_NULL_RETURN(ctx);
if (ctx->root_menu) e_dbusmenu_item_unref(ctx->root_menu);
obj = eldbus_proxy_object_get(ctx->proxy);
conn = eldbus_object_connection_get(obj);
eldbus_proxy_unref(ctx->proxy);
eldbus_object_unref(obj);
eldbus_connection_unref(conn);
free(ctx);
}

View File

@ -124,7 +124,7 @@ e_desklock_interface_append(E_Desklock_Interface *iface)
desklock_ifaces = eina_list_append(desklock_ifaces, (void*)iface);
if (_e_desklock_state && (!current_iface))
{
if (iface->show(EINA_TRUE))
if (iface->show())
{
iface->active = EINA_TRUE;
current_iface = iface;
@ -155,7 +155,7 @@ e_desklock_interface_remove(E_Desklock_Interface *iface)
/* then try to find a replacement locker */
EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, diface)
{
if (!diface->show(EINA_TRUE)) continue;
if (!diface->show()) continue;
diface->active = EINA_TRUE;
current_iface = diface;
break;
@ -209,7 +209,7 @@ e_desklock_demo(void)
EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, iface)
{
if (iface->show(EINA_FALSE))
if (iface->show())
{
demo = iface->active = EINA_TRUE;
current_iface = iface;
@ -254,7 +254,7 @@ _desklock_show_internal(Eina_Bool suspend)
e_menu_hide_all();
EINA_LIST_FOREACH(show_hooks, l, show_cb)
{
if (!show_cb(suspend)) goto fail;
if (!show_cb()) goto fail;
}
EINA_LIST_FOREACH(e_comp->zones, l, zone)
@ -278,28 +278,6 @@ _desklock_show_internal(Eina_Bool suspend)
if (e_config->desklock_language)
e_intl_language_set(e_config->desklock_language);
if ((e_config->xkb.lock_layout) && (e_config->xkb.desklock_layout))
{
if ((!e_config->xkb.lock_layout->name) ||
(!!strcmp(e_config->xkb.lock_layout->name, e_config->xkb.desklock_layout)))
{
e_config_xkb_layout_free(e_config->xkb.lock_layout);
e_config->xkb.lock_layout = NULL;
}
}
if ((e_config->xkb.desklock_layout) && (!e_config->xkb.lock_layout))
{
E_Config_XKB_Layout *cl;
EINA_LIST_FOREACH(e_config->xkb.used_layouts, l, cl)
{
if ((cl->name) && (!strcmp(cl->name, e_config->xkb.desklock_layout)))
{
e_config->xkb.lock_layout = e_config_xkb_layout_dup(cl);
break;
}
}
}
if (e_config->xkb.lock_layout)
e_xkb_layout_set(e_config->xkb.lock_layout);
@ -317,7 +295,7 @@ _desklock_show_internal(Eina_Bool suspend)
EINA_LIST_REVERSE_FOREACH(desklock_ifaces, l, iface)
{
success = iface->show(suspend);
success = iface->show();
if (success)
{
iface->active = EINA_TRUE;
@ -340,7 +318,6 @@ _desklock_show_internal(Eina_Bool suspend)
if (getenv("E_START_MANAGER")) kill(getppid(), SIGUSR2);
_e_desklock_state = EINA_TRUE;
e_sys_locked_set(_e_desklock_state);
e_bindings_disabled_set(1);
e_screensaver_update();
e_dpms_force_update();
@ -409,7 +386,6 @@ _desklock_hide_internal(void)
}
_e_desklock_state = EINA_FALSE;
e_sys_locked_set(_e_desklock_state);
e_bindings_disabled_set(0);
ev = E_NEW(E_Event_Desklock, 1);
ev->on = 0;
@ -529,6 +505,8 @@ _e_desklock_cb_run(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
E_Order *desk_run;
char buf[PATH_MAX];
if (!ev->suspend) return ECORE_CALLBACK_PASS_ON;
if (ev->on)
{
e_user_dir_concat_static(buf, "applications/desk-lock/.order");

View File

@ -1,7 +1,7 @@
#ifdef E_TYPEDEFS
typedef struct _E_Event_Desklock E_Event_Desklock;
typedef Eina_Bool (*E_Desklock_Show_Cb)(Eina_Bool immediate);
typedef Eina_Bool (*E_Desklock_Show_Cb)(void);
typedef void (*E_Desklock_Hide_Cb)(void);
typedef enum _E_Desklock_Background_Method {

View File

@ -593,7 +593,7 @@ _e_deskmirror_mirror_setup(Mirror *m)
evas_object_pass_events_set(m->mirror, !m->ec);
}
if (m->ec) evas_object_data_set(m->mirror, "E_Client", m->ec);
evas_object_precise_is_inside_set(m->mirror, m->ec && (m->ec->shaped));
evas_object_precise_is_inside_set(m->mirror, m->ec && (m->ec->shaped || m->ec->shaped_input));
e_layout_pack(m->sd->layout, m->mirror);
_e_deskmirror_mirror_reconfigure(m);
if (m->sd->handlers) // no handlers = we're setting up = there's no possible listeners

View File

@ -13,7 +13,6 @@ static unsigned int _e_dpms_timeout_standby = 0;
static unsigned int _e_dpms_timeout_suspend = 0;
static unsigned int _e_dpms_timeout_off = 0;
static int _e_dpms_enabled = EINA_FALSE;
E_API Eina_Bool e_dpms_actual = EINA_FALSE;
#ifdef HAVE_WAYLAND
static Eina_List *handlers;
@ -22,6 +21,10 @@ static Ecore_Timer *suspend_timer;
static Ecore_Timer *off_timer;
#endif
#define STANDBY 10
#define SUSPEND 11
#define OFF 12
E_API void
e_dpms_update(void)
{
@ -32,7 +35,6 @@ e_dpms_update(void)
enabled = ((e_config->screensaver_enable) &&
(!((e_util_fullscreen_any()) &&
(e_config->no_dpms_on_fullscreen))));
if (e_screensaver_current_timeout_get() == 0) enabled = EINA_FALSE;
if (_e_dpms_enabled != enabled)
{
_e_dpms_enabled = enabled;
@ -40,15 +42,9 @@ e_dpms_update(void)
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
{
if (!e_config->screensaver_dpms_off)
{
ecore_x_dpms_enabled_set(enabled);
e_dpms_actual = enabled;
}
ecore_x_dpms_enabled_set(enabled);
else
{
ecore_x_dpms_enabled_set(0);
e_dpms_actual = EINA_FALSE;
}
ecore_x_dpms_enabled_set(0);
}
#endif
}
@ -57,9 +53,9 @@ e_dpms_update(void)
if (e_config->screensaver_enable)
{
off = suspend = standby = e_screensaver_timeout_get(EINA_FALSE);
standby += E_DPMS_STANDBY;
suspend += E_DPMS_SUSPEND;
off += E_DPMS_OFF;
standby += STANDBY;
suspend += SUSPEND;
off += OFF;
}
if (_e_dpms_timeout_standby != standby)
{
@ -91,20 +87,13 @@ e_dpms_force_update(void)
int enabled;
enabled = (e_config->screensaver_enable);
if (e_screensaver_current_timeout_get() == 0) enabled = EINA_FALSE;
#ifndef HAVE_WAYLAND_ONLY
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
{
if (!e_config->screensaver_dpms_off)
{
ecore_x_dpms_enabled_set(enabled);
e_dpms_actual = enabled;
}
ecore_x_dpms_enabled_set(enabled);
else
{
ecore_x_dpms_enabled_set(0);
e_dpms_actual = EINA_FALSE;
}
ecore_x_dpms_enabled_set(0);
}
#endif
if (!enabled) return;
@ -112,9 +101,9 @@ e_dpms_force_update(void)
if (e_config->screensaver_enable)
{
off = suspend = standby = e_screensaver_timeout_get(EINA_FALSE);
standby += E_DPMS_STANDBY;
suspend += E_DPMS_SUSPEND;
off += E_DPMS_OFF;
standby += STANDBY;
suspend += SUSPEND;
off += OFF;
}
#ifndef HAVE_WAYLAND_ONLY
if (e_comp->comp_type != E_PIXMAP_TYPE_X) return;
@ -182,9 +171,9 @@ _e_dpms_off(void *d EINA_UNUSED)
static Eina_Bool
_e_dpms_screensaver_on()
{
standby_timer = ecore_timer_loop_add(E_DPMS_STANDBY, _e_dpms_standby, NULL);
suspend_timer = ecore_timer_loop_add(E_DPMS_SUSPEND, _e_dpms_suspend, NULL);
off_timer = ecore_timer_loop_add(E_DPMS_OFF, _e_dpms_off, NULL);
standby_timer = ecore_timer_loop_add(STANDBY, _e_dpms_standby, NULL);
suspend_timer = ecore_timer_loop_add(SUSPEND, _e_dpms_suspend, NULL);
off_timer = ecore_timer_loop_add(OFF, _e_dpms_off, NULL);
return ECORE_CALLBACK_RENEW;
}

View File

@ -3,17 +3,11 @@
#ifndef E_DPMS_H
#define E_DPMS_H
#define E_DPMS_STANDBY 10
#define E_DPMS_SUSPEND 11
#define E_DPMS_OFF 12
EINTERN int e_dpms_init(void);
EINTERN int e_dpms_shutdown(void);
E_API void e_dpms_update(void);
E_API void e_dpms_force_update(void);
E_API extern Eina_Bool e_dpms_actual;
#endif
#endif

View File

@ -599,7 +599,6 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
if (startup_id < 0) startup_id = 0;
}
if (++startup_id < 1) startup_id = 1;
e_exehist_startup_id_set(startup_id);
snprintf(buf, sizeof(buf), "E_START|%i", startup_id);
e_util_env_set("DESKTOP_STARTUP_ID", buf);

View File

@ -1821,6 +1821,7 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget
else if ((!gcc->style) &&
(!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_PLAIN)))
e_menu_item_toggle_set(mi, 1);
e_menu_item_disabled_set(mi, mi->toggle);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_plain, gcc);
mi = e_menu_item_new(mo);
@ -1833,6 +1834,7 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget
else if ((!gcc->style) &&
(!e_util_strcmp(gcc->client_class->default_style, E_GADCON_CLIENT_STYLE_INSET)))
e_menu_item_toggle_set(mi, 1);
e_menu_item_disabled_set(mi, mi->toggle);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_inset, gcc);
mi = e_menu_item_new(menu_gadget);

View File

@ -597,11 +597,8 @@ e_hints_window_state_set(E_Client *ec)
if (ec->netwm.state.skip_pager)
state[num++] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
}
if (!e_config->no_state_hidden_desktop)
{
if (ec->netwm.state.hidden)
state[num++] = ECORE_X_WINDOW_STATE_HIDDEN;
}
if (ec->netwm.state.hidden)
state[num++] = ECORE_X_WINDOW_STATE_HIDDEN;
if (ec->netwm.state.fullscreen)
state[num++] = ECORE_X_WINDOW_STATE_FULLSCREEN;

View File

@ -1,16 +0,0 @@
"terminology.desktop",
"xterm.desktop",
"rxvt.desktop",
"gnome-terminal.desktop",
"konsole.desktop",
"Alacritty.desktop",
"cool-retro-term.desktop",
"kitty.desktop",
"urxvt.desktop",
"terminator.desktop",
"termite.desktop",
"qterminal.desktop",
"xfce4-terminal.desktop",
"lxterminal.desktop",
"com.gexperts.Tilix.desktop",
"deepin-terminal.desktop",

View File

@ -28,7 +28,6 @@
#include "e_place.h"
#include "e_resist.h"
#include "e_startup.h"
#include "e_state.h"
#include "e_signals.h"
#include "e_xinerama.h"
#include "e_layout.h"
@ -156,7 +155,6 @@
#include "e_comp_x_randr.h"
#include "e_watchdog.h"
#include "e_gesture.h"
#include "e_sound.h"
#ifdef HAVE_WAYLAND
# include "e_comp_wl.h"

View File

@ -72,7 +72,6 @@ e_int_client_prop(E_Client *ec)
if (ec->border_prop_dialog) return;
dia = e_dialog_new(NULL, "E", "_window_props");
e_dialog_resizable_set(dia, 1);
e_object_del_attach_func_set(E_OBJECT(dia), _ec_cb_dialog_del);
_create_data(dia, ec);
@ -456,30 +455,30 @@ _ec_icccm_create(E_Dialog *dia, void *data EINA_UNUSED)
e_widget_toolbook_page_append(otb, NULL, _("General"), o, 1, 1, 1, 1, 0.5, 0.0);
o = e_widget_table_add(e_win_evas_win_get(evas), 0);
STR_ENTRY(_("Minimum Size"), 0, 0, icccm.min);
STR_ENTRY(_("Maximum Size"), 0, 1, icccm.max);
STR_ENTRY(_("Base Size"), 0, 2, icccm.base);
STR_ENTRY(_("Resize Steps"), 0, 3, icccm.step);
STR_ENTRY(_("Minimum Size"), 0, 6, icccm.min);
STR_ENTRY(_("Maximum Size"), 0, 7, icccm.max);
STR_ENTRY(_("Base Size"), 0, 8, icccm.base);
STR_ENTRY(_("Resize Steps"), 0, 9, icccm.step);
e_widget_toolbook_page_append(otb, NULL, _("Sizing"), o, 1, 1, 1, 1, 0.5, 0.0);
o = e_widget_table_add(e_win_evas_win_get(evas), 0);
STR_ENTRY(_("Aspect Ratio"), 0, 0, icccm.aspect);
STR_ENTRY(_("Initial State"), 0, 1, icccm.initial_state);
STR_ENTRY(_("State"), 0, 2, icccm.state);
STR_ENTRY(_("Window ID"), 0, 3, icccm.window_id);
STR_ENTRY(_("Window Group"), 0, 4, icccm.window_group);
STR_ENTRY(_("Transient For"), 0, 5, icccm.transient_for);
STR_ENTRY(_("Client Leader"), 0, 6, icccm.client_leader);
STR_ENTRY(_("Gravity"), 0, 7, icccm.gravity);
STR_ENTRY(_("Command"), 0, 8, icccm.command);
STR_ENTRY(_("Aspect Ratio"), 2, 0, icccm.aspect);
STR_ENTRY(_("Initial State"), 2, 1, icccm.initial_state);
STR_ENTRY(_("State"), 2, 2, icccm.state);
STR_ENTRY(_("Window ID"), 2, 3, icccm.window_id);
STR_ENTRY(_("Window Group"), 2, 4, icccm.window_group);
STR_ENTRY(_("Transient For"), 2, 5, icccm.transient_for);
STR_ENTRY(_("Client Leader"), 2, 6, icccm.client_leader);
STR_ENTRY(_("Gravity"), 2, 7, icccm.gravity);
STR_ENTRY(_("Command"), 2, 8, icccm.command);
e_widget_toolbook_page_append(otb, NULL, _("States"), o, 1, 1, 1, 1, 0.5, 0.0);
o = e_widget_table_add(e_win_evas_win_get(evas), 0);
CHK_ENTRY(_("Take Focus"), 0, 0, icccm.take_focus);
CHK_ENTRY(_("Accepts Focus"), 0, 1, icccm.accepts_focus);
CHK_ENTRY(_("Urgent"), 0, 2, icccm.urgent);
CHK_ENTRY(_("Request Delete"), 2, 0, icccm.delete_request);
CHK_ENTRY(_("Request Position"), 2, 1, icccm.request_pos);
CHK_ENTRY(_("Take Focus"), 0, 11, icccm.take_focus);
CHK_ENTRY(_("Accepts Focus"), 0, 12, icccm.accepts_focus);
CHK_ENTRY(_("Urgent"), 0, 13, icccm.urgent);
CHK_ENTRY(_("Request Delete"), 2, 11, icccm.delete_request);
CHK_ENTRY(_("Request Position"), 2, 12, icccm.request_pos);
e_widget_toolbook_page_append(otb, NULL, _("Settings"), o, 1, 1, 1, 1, 0.5, 0.0);
e_widget_toolbook_page_show(otb, 0);
@ -502,19 +501,19 @@ _ec_netwm_create(E_Dialog *dia, void *data EINA_UNUSED)
evas = evas_object_evas_get(dia->win);
otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
o = e_widget_table_add(e_win_evas_win_get(evas), 0);
STR_ENTRY(_("Name"), 0, 0, netwm.name);
STR_ENTRY(_("Icon Name"), 0, 1, netwm.icon_name);
STR_ENTRY(_("Stacking"), 0, 2, netwm.stacking);
STR_ENTRY(_("Name"), 0, 1, netwm.name);
STR_ENTRY(_("Icon Name"), 0, 2, netwm.icon_name);
STR_ENTRY(_("Stacking"), 0, 3, netwm.stacking);
e_widget_toolbook_page_append(otb, NULL, _("General"), o, 1, 1, 1, 1, 0.5, 0.0);
o = e_widget_table_add(e_win_evas_win_get(evas), 0);
CHK_ENTRY(_("Modal"), 0, 0, netwm.modal);
CHK_ENTRY(_("Sticky"), 0, 1, netwm.sticky);
CHK_ENTRY(_("Shaded"), 0, 2, netwm.shaded);
CHK_ENTRY(_("Skip Taskbar"), 2, 0, netwm.skip_taskbar);
CHK_ENTRY(_("Skip Pager"), 2, 1, netwm.skip_pager);
CHK_ENTRY(_("Hidden"), 2, 2, netwm.hidden);
CHK_ENTRY(_("Fullscreen"), 2, 3, netwm.fullscreen);
CHK_ENTRY(_("Modal"), 0, 4, netwm.modal);
CHK_ENTRY(_("Sticky"), 0, 5, netwm.sticky);
CHK_ENTRY(_("Shaded"), 0, 6, netwm.shaded);
CHK_ENTRY(_("Skip Taskbar"), 0, 7, netwm.skip_taskbar);
CHK_ENTRY(_("Skip Pager"), 0, 8, netwm.skip_pager);
CHK_ENTRY(_("Hidden"), 0, 9, netwm.hidden);
CHK_ENTRY(_("Fullscreen"), 0, 10, netwm.fullscreen);
e_widget_toolbook_page_append(otb, NULL, _("Settings"), o, 1, 1, 1, 1, 0.5, 0.0);
e_widget_toolbook_page_show(otb, 0);

View File

@ -12,7 +12,6 @@ struct _Main_Data
E_Menu *enlightenment;
E_Menu *config;
E_Menu *lost_clients;
E_Menu *inhibitors;
};
/* local subsystem functions */
@ -64,7 +63,6 @@ static void _e_int_menus_desk_item_cb(void *data, E_Menu *m, E_Menu_Item
static void _e_int_menus_item_label_set(Efreet_Menu *entry, E_Menu_Item *mi);
static Efreet_Menu *_e_int_menus_apps_thread_new(E_Menu *m, const char *dir);
static Eina_Bool _e_int_menus_efreet_desktop_cache_update(void *d, int type, void *e);
static void _e_int_menus_inhibit_cb(void *data, E_Menu *m, E_Menu_Item *mi);
//static void _e_int_menus_apps_drag_finished(E_Drag *drag, int dropped EINA_UNUSED);
/* local subsystem globals */
@ -196,16 +194,6 @@ e_int_menus_main_new(void)
e_util_menu_item_theme_icon_set(mi, "preferences-desktop");
e_menu_item_submenu_set(mi, subm);
if ((e_msgbus_data) && (e_msgbus_data->screensaver_inhibits))
{
subm = e_int_menus_inhibitors_new();
dat->inhibitors = subm;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Blanking Block"));
e_util_menu_item_theme_icon_set(mi, "preferences-screen-normal");
e_menu_item_submenu_set(mi, subm);
}
subm = e_int_menus_clients_new();
dat->clients = subm;
mi = e_menu_item_new(m);
@ -430,46 +418,6 @@ e_int_menus_lost_clients_new(void)
return m;
}
static void
_e_int_menus_inhibit_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
{
uintptr_t cookie = (uintptr_t)data;
e_msgbus_screensaver_inhibit_remove((unsigned int)cookie);
}
E_API E_Menu *
e_int_menus_inhibitors_new(void)
{
E_Menu *m;
E_Menu_Item *mi;
Eina_List *l;
E_Msgbus_Data_Screensaver_Inhibit *inhibit;
char buf[1024];
m = e_menu_new();
if (!((e_msgbus_data) && (e_msgbus_data->screensaver_inhibits)))
return NULL;
EINA_LIST_FOREACH(e_msgbus_data->screensaver_inhibits, l, inhibit)
{
mi = e_menu_item_new(m);
if ((inhibit->application) && (inhibit->reason))
snprintf(buf, sizeof(buf), "%s (%s)", inhibit->application, inhibit->reason);
else if (inhibit->application)
snprintf(buf, sizeof(buf), "%s", inhibit->application);
else if (inhibit->reason)
snprintf(buf, sizeof(buf), "(%s)", inhibit->reason);
else
snprintf(buf, sizeof(buf), "???");
e_menu_item_label_set(mi, buf);
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _e_int_menus_inhibit_cb,
(void *)((uintptr_t)inhibit->cookie));
}
return m;
}
E_API E_Int_Menu_Augmentation *
e_int_menus_menu_augmentation_add_sorted(const char *menu,
const char *sort_key,
@ -645,7 +593,6 @@ _e_int_menus_main_del_hook(void *obj)
if (dat->lost_clients) e_object_del(E_OBJECT(dat->lost_clients));
if (dat->enlightenment) e_object_del(E_OBJECT(dat->enlightenment));
if (dat->config) e_object_del(E_OBJECT(dat->config));
if (dat->inhibitors) e_object_del(E_OBJECT(dat->inhibitors));
free(dat);
_e_int_menus_augmentation_del(m, _e_int_menus_augmentation_find("main/0"));

View File

@ -67,7 +67,6 @@ E_API E_Menu *e_int_menus_all_apps_new(void);
E_API E_Menu *e_int_menus_config_new(void);
E_API E_Menu *e_int_menus_lost_clients_new(void);
E_API E_Menu *e_int_menus_shelves_new(void);
E_API E_Menu *e_int_menus_inhibitors_new(void);
E_API E_Int_Menu_Augmentation *e_int_menus_menu_augmentation_add(const char *menu,
void (*func_add) (void *data, E_Menu *m),

View File

@ -865,7 +865,11 @@ _e_intl_locale_system_locales_get(void)
locales = NULL;
/* FIXME: Maybe needed for other BSD OS, or even Solaris */
#ifdef __OpenBSD__
output = popen("ls /usr/share/locale", "r");
#else
output = popen("locale -a", "r");
#endif
if (output)
{
char line[32];

Some files were not shown because too many files have changed in this diff Show More