Add a popup for battery. It will update if left visible. The popup
avoids polling by using a slightly delayed copy of the battery
state stored in config struct.
Playing around with steam/optimus/linux/multiple heads the popup
stuck around when i did something very unusual, so make sure it
goes...trust me i'm a professional....
This behaviour can be more intelligent, but for now it covers most
cases. Yet to see tasks in use in the wild outside a shelf, though
it can happen so should be giving something reasonable for this
choice.
so this was the hiccups have been seeing... it was temperature +eeze+
udev stalling out. tempget backend works without stalls so that is now
the only one.
As we can detect for double scan (since randr 1.2), list the mode
as valid, and also ensure the refresh rate is displayed correctly.
Each line is rendered twice, doubles the dot clock, so divide the
settings view by 2 so that it makes "sense". Can always add
flags to settings if deemed necessary.
rememebr zone randr id where clients were if forced off a zone. if a
zone is added check clients with that zone id - if they have it then
restore them there. thbis will get loat if you move those clients
between zones after they are dumped on the other zone or you change
their virtual desktop etc.
If the comp mirror fails add a timer to delay the mirror object
creation. When iconified and in-preview on an E restart the
miror object was failing. Here we try once per icon, per
iconification. This *should* only be occurring once at this point
when E restarts.
This is currently using libinputs gesture recognition. And offers a
config screen to setup new gestures.
1. No default gesture bindings are setup
2. When libinput is not available the module is not going to be loaded,
and nothing is recognited.+
3. Only swipe gestures are recognized yet.
4. For now, you are required to be part of the input group, otherwise we cannot
get the libinput events. (See Todo 1)
5. The visual representation is not really good. In terms of UI, it is
visually showing a value coming from left to right, which is
indicating a direction, which is not always the direction of the
gesture, which is kind of bad. More improvements needed here.
Some things that still can be done:
1. The whole libinput things should be handled by elput, either with the
input group hack, or logind, or simply by root. The ideal idea would
be that e_sys is creating the elput context, which also listens for new
devices etc.. When all this is done, and it recognizes a new device, it
can simply sent a message from e_sys to e, that there is some new
device, with a opened fd. (However, this all needs to be locked up in a
way that e_sys cannot be abused)
additionally, this ensures that clients that cannot be layouted are
definitly outside the tree. Without applying the window tree again.
With all this tiling can be used quite normally. If you want to know
exactly what is going on, set notify level to info, then tiling tells
you what cannot be tiled.
This reverts commit 265c306874.
This is somehow the wrong way of doing that. Next commit will bring
protection against multiple recursive window_tree_apply calls.
Additionally, we should prepare to *not* accidently tile a window that
has been previously untiled.
there is an FDO version of this. it seems it's not widely supported
but the org.kde is. at some point we probbably have to move over but
for now there isn't a need, but make note of this and have DOMAIN able
to switch in a heartbeat if we want to.
Summary:
* No dragging icons within an ibox (it can be perceived as
a broken move visually).
* Show preview when dragging a preview.
* When dragging an object into the ibox, the drop icon should
be at the position of the dnd. Else mouse pointer and the
indicator are out of sync and it looks like a bug.
Reviewers: devilhorns
Subscribers: raster, cedric, zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D12050
so library somewhere is causing an exit(1) sometimes... this means i
lose my entire desktop. this is not e doing it... so it's some
dependency bug and this shouldn't happen - but it does and it causes
the entire login session to be losst, so treat an exit code ofr 0 as a
clean exit, and anything else as a bug to be handled like segfaults
etc. and restart e.
alsoit was inaccurate reling on polling (a poller) and thus wakeups
all the time ... so use the "lock on blanking" in timers instead... :)
less complexity to deal with in config anyway.
so there was a fair bit of stick-tape and chewing gum in putting the
wl screensaving in e_Screensaver.c ... it thus was very different to
the x stuff. it SHOULd have had e_comp_wl handle idle timeout like the
xserver did and then glue in the same way the x code did to be
conistsent. instead of trying to fix the chewing gum ball there in
e_Screensver.c to find the logic holes ... i made it work like the
code as indicated above. this now makes it work reliably. dim
reliably. lock reliably. it even doesnt exit on ctrl+alt+backspace
once desklock is up now to allow locks to really lock... (dont use
locks during dev then if you need ctl+alt+backspace).
at least now all this dpms/screensavwr/brightness/backlight/lock goop
is consistent between wl and x11 and wl seems reliabkle now (to me).
knock this off as an annoyance fixed.
@fix
This fixes a build break on FreeBSD. Guarding as per other
blocks. These guards can be removed at a later stage as OpenBSD
has removed malloc.h and FreeBSD is in the process of
reintroducing it after a failed attempt to deprecate the header.
For consistency's sake keep these blocks identical within the
tree. We can nuke these later when FreeBSD make their minds up.
pager didnt reset aspect after setting min size. fixed. also improve
thumb generation by having no artifical delays. use idle enterer + job
wakeups instead. now thumbs appear almost instantly.
also remove initial pager popup on starup that is just not needed.
fixes T8314
@fix
This should fix build on systems where execinfo.h is present
but the APIs are implemented in a separate library - commonly
a case on the BSDs as well as on non-glibc libcs and so on.
it used ot be a separate process to run to hide e starting in the bg
on a slow hdd loading modules etc. but due to compisitng and other
changes its all internal now, so keep it on always as it guarantees a
better smoother experience with less complexity to maintain.
use less stack with smaller "just big enough" alloca'd string buffers.
as e_start hangs around looking after e all day, using a bit less mem
is a good thing.
@opt
snprintf will use locale and maybe print 10,24 instead of 10.24 ...
thus use a custom routine to specially do this always by hand without
mssing with locale.
@fix
e.g. shelf re-configures or adds/removes etc. cause bt gadget icon to
not show current state right. it was missing an "init the state" for
these cases.
@fix
so in the non-systemd case there was a current e sys action stored and
never cleared. e keeps thinking it is in the midddle of an action as
it was not cleared. the systemd code path was different and didn't
suffer from this. this fixes that so the non-systemd path works too.
@fix
all dirs owned by root - so can't be exploited. this code is not
acessible at this point so no actual issues. it still needs testing.
until other work is done it won't be tested yet.
fixes T8671 further comments on umount check.
on reconfigure if we find the pointer outside the screen region bounds
it can get caught there until a warp forces it in. this is due to the
barriers i added i think. this fixes that
@fix
no others subtrace the base... weston doesnt.. no input events cb's
do... this is a mistake with what is a wrong timeline as a result. fix
and use the same timeline as everyone else
@fix
reopen D8928
it looked good until i started having some apps start/stop audio a lot
with asan on - it was catching memory mis-accesses. definitely not ok
to have this in
Revert "e client vol - fix del-self in a del while deleting self..."
This reverts commit e78c8b6b5f.
Revert "e_client_volume: Update the e_client frame object on sink del event"
This reverts commit f4c1ba959e.
Summary:
File managers should handle inode/directory, not
x-scheme-handler/file. Registering x-scheme-handler/file means that the file
manager app should open all "file://" URLs. And because of some details of the
FDO spec, scheme handlers override mime-type handlers. As a result, other
desktop environments can start using a file manager to open all local files.
fixes T7521
Reviewers: devilhorns, raster
Reviewed By: raster
Subscribers: cedric, zmike
Tags: #enlightenment-git
Maniphest Tasks: T7521
Differential Revision: https://phab.enlightenment.org/D10244
Summary:
This commit avoid multiple windows got the same sink. Like launching
rage from terminology, gstreamer sink could be associated with terminology
and rage window too.
Reviewers: raster, devilhorns
Subscribers: cedric, zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D8929
When setting a custom environment variable display the variable
name and the value in NAME=VALUE format within the UI list. If
the value string is long then use an ellipsis. Adds some clarity.
this is complicated ... but a confluence of zoomap original geom vs
transformed geom etc. ... things go wrong. this does a fixup to ensure
they go right...
@fix
if on some screens you have shelves eating up useful geometry then
window position can be off/wrong. this fixes this to use the zone
useful geom as the baseline.
@fix
This ensures we have a matching $HOME when using setuid, without
which can potentially cause issues in eina_vpath on some
systems (FreeBSD as example).
not all mouswe bindings use alt ... thus this kind of doesnt make
sense.... it also makes it harder to tell people what to do like
alt+left mouse drag anywhere to move a window.
if theme doesn't support, fade-in will not happen (it'll just appear),
but if it does... e will fade to black for a restart, then fade back
in nice and cleanly.
Improve auto hide behaviour. Allow the user to re-enter an
auto-hiding shelf as many times as he/she likes. This fixes the
issue where hovering back onto such a configured shelf causes
the shelf to hide and then animate.
This needs to move to edje. As per the TODO task.
Revert "fix spurious pointer jumps due to previous commit bugfix"
This reverts commit 550de9a680.
Revert "focus - fix emacs buffer switch focus set reported by felipe"
This reverts commit 690ab94c06.
There is no fallback mechanism for BSD systems. We need to avoid
polling here as it will break E on first poll of data.
Essentially, if we fail to find a battery, we use a broken
fallback mechanism which breaks E. Don't do this :)
emacs window (not in terminal). now in one:
ctrl+x 5 2 <- open new buffer
now we have it try switch to the other buffer:
ctrl+x 5 o
broken ... now fixed.
@fix
detail work on pager(gadget) settings
- changed indicator format to slider format
- changed steps to make more sence
Reviewed-by: Christopher Michael <devilhorns@comcast.net>
Differential Revision: https://phab.enlightenment.org/D11693
check the newly focused window is not part of a parent tree back to a
fullscreen window e is considering unfullscreening on loss of focus.
fixes T8651
@fix
make the dialog resizeable
the position tab is not the beste
Reviewed-by: Christopher Michael <devilhorns@comcast.net>
Differential Revision: https://phab.enlightenment.org/D11683
wallpaper selector - small optimizations
Reviewed-by: Christopher Michael <devilhorns@comcast.net>
Differential Revision: https://phab.enlightenment.org/D11673
Sorting music players alphabetically
Pithos 1.5.0 renames the MPRIS app-id, this is the update.
Also, sorting the list of music players alphabetically.
Reviewed-by: Christopher Michael <devilhorns@comcast.net>
Differential Revision: https://phab.enlightenment.org/D10349
fixes T8622
so due rto optimizations in edje it no longer moves/resizes invsible
parts, so swallow a rect and it wont have moved if it is not visible
thus tracking its geometry by getting the geometry of the swallowed
part only works if its visible, so get the part geom from edje instead
which has to give the calculated geom.
so memset_s still doesn't get detected (add a check anyway), but there
are other alternatives, so detect and use them if found
(explicit_bzero, explicit_memset) in addition to the generally
"practically works" memset ptr method we had and.. just to be extra
safe add an asm memory barrier to this fallback. also.. mlock the
passwd memory in lokker (if it doesn't work - don't worry - there is
nothing we can do, so we did our best) to avoid this memory gettign
swapped etc.
beating on ddc support to make it solid. dealing with some bad screens
that don't respond, a libddcutil that was doing a printf messing up
the message stream from e_system to e .... and more.
this ensures things like on login e setsup backlights fine - also on
monitor add/plug-in as when e's backlight init happens it may not see
all screens or devices yet.
so if monitor is buys waking up from dpms, it may not be bothering to
do what we asked... but the sets of the propety say they succeed, so
use the get at the end of a fade in run to see if we get the target
brightness within some delta and it's one of our standard brightnesses
(1.0, normal or dim) and retry a few times until we succeed or give
up. this ensures on wakupe your monitors end up at their target
brightness even with some hiccups as opposed to stay dim. not much we
can do about iffy hardware or libddcutil (not sure which is to blame)
other than do workarounds like this.
also add logging so you can see what is being asked and if it succeeds
or fails according to libddcutil.
just by luck the queue "play catchup" happens to have a classic
scheduling issue. one screen always wins, the other always loses as we
play catch-up in the request queue so one is starved of "scheduling
slots" while the othe rgets them all. this fixes that by moving the
entire request queue into the thread work queue in one go so they all
get an equal chance. now botjh my desktop monitors dim smoothly on
idle like my laptop... smooooooooood
This adds ddc monitor control and glues it into the backlight system.
A result of this is now backlgiht control gadgets work screen by
screen and even on desktop monitors as well as on a laptop panel. If
you now put a backlight gadget on a shelf on each screen... it will
control THAT screen's backlight.
This requires libddcutil to be installed. That will require i2c
modules (i2c-dev specifically). This means that this is likely not
going to do anything useful on bsd's... unless libddcutil happens to
work there by chance.
so install ddcutil/libddcutil. ensure it's in ld.so.conf so setuid
root processes find it (as LD_LIBRARY_PATH won't help) and enjoy your
new funcky per-screen backlight controls... :)
@feature
Summary:
What i have done:
- Open slider will update using mouse wheel over light bulb
- Open slider will update using keybindings
- Slider shows now a value between 1 and 100 (no double value is displayed anymore)
- Removed unnecessary code for shelf module
- removed code for buggy popup using keybindings (may add later an option for showing popup on backlight change)
I am still learning. please consider :)
Greetings Simon
Reviewers: bu5hm4n, morlenxus, devilhorns, raster
Subscribers: cedric, zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D11065
now it really does look for the right way to control per screen and
only use the new e_system back-end to query/list devices etc. ...
this now opens the door to adding ddc support to e_system then using
it from e_backlight.
i can't test this... yet - but this means in theory the backlight
gadget will control the backlight of the screen it is on...
pre-scale a bunch of resolutions for generated wallpaper files that
intersect with common resolution sizes so e will automatically load
the nearest resolution to be more efficient on load to only decode
what is needed. a bi-product is that e now has a wallapper gen
tool that is simpler than writing your own edc files... :)
@feature
gtk and efl can use csd. we kind of were copying gtk's but we got it
wrong... in efl. and in etoo as a result. this fixes it to use
min/bas/max size as covering the whole window including the insets.
@fix
amazing this didn't blow up before. missing e_ in front ad the macro
should have transformed this to wrap the e version of this func...
clang warning pointed this out. a real bug waiting to happen.
@fix
this means no leaked fd's between restarts too. cleaner. it also
encorces "die with parent" for enlightenment_start too as another
bonus in addition to its own fifo handling for singleton access per uid.
WARNING: you need to log out and log back in since the "protocol
expectations" (what exit codes do what and what parent and child
process are responsible for) changed so to get them both back in sync
you need to log out and in.
no improvements like per screen brightness... but a straight
conversion to the new system tool which simplifies e backlight a lot.
it'd be betetr to use the new system also to read backlight value and
list lightss etc ... but for now this is a good first stage.
so e has had a bit of a mess of setuid root tools to do things that
are essential to maintaing a functioning desktop/laptop/tablet/phone
like device like shutting it down or suspending or sqizzling the cpu
governor or messing with the backlight or... you get the idea.
this has been spread around enlightenment_sys and other special
purpose tools. this now unifies it into a single "always there"
enlightenment_system backend setuid root slave process whose job it is
to do all these things via a stdio protocol in an organized way. this
means latency to do something is lower, but at the expense of
consuming ram and a lurking process. unfortunately the lurking will be
needed soon when i add ddc support to make it even vaguely efficient,
so it's a cost i guess we have to pay now. we'll need this in future
as well for some stats collection and more.
still need to port existing code to use this instead of the existing stuff,
and then remove of the old stuff.
when you select save from shot now it always saves to your user shots
dir (~/.e/e/shots) and then opens up this fir for you to browse/see/dnd
out of etc. etc. for easier quick and fast access to what you just
saved. also you keep a history of your shots (you do get to clean it up
yourself when you save... no auto-cleaning - i decided not to bother
as realistically it's just more config to swizzle and mystery deletion
of files that some user has to figure out how and why it happens and
where to go change the config - just delete the ones you don't want
anymore - simple and easy.)
shot - add shot editor with arbitrary cropping and drawing tools
We don't need padded vs other shot of window now as u can remove the
padding with a single click in the editor now, so remove that (comment
it out).
The editor allows you to click on each screen, on a window (and click
again on a window to remove the padding area for the crop so its
snugly around the window).
You can zoom in and out and scroll around.
You can add lines with an arrow, double-arrowed lines, plain lines
with no arrows, some clipart (e-logo, mallocs, pointing finger... just
having some fun) and some fun "text boxes" like though bubbles,
speecvh bubbles, just plain text with a darking outline, a plain
entry-styled text box and you can select the colors for the text and
background area as well.
It's inksape-like in that the items you draw are objects that can then
be modified or deleted. modifying them raises them and places some
controls on/over/around the object.
And you can still save and share the results.
Fun times!
@feat
Summary:
This adds additional checks to ensure we dont add this field
when it shouldn't be there. Currently files like .tgz are
listing a "Resolution" on mouseover in EFM.
Test Plan:
Mouse over different file types. See inappropriate field.
Apply patch.
Mouse over file types. Resolution should only show for media.
Reviewers: raster, devilhorns
Reviewed By: raster
Subscribers: cedric, zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D10783
The battery status is shared between instances. The only time
this should be freed is when only one instance remains. Now
multiple instances can be added or removed without hindering
the display of sysinfo and batman instances. Inline with
recent FreeBSD and OpenBSD fixes.
When we add a batman gadget to the desktop it previously would
reset the values of all existing batman instances. Here we
ignore the dummy instance used when adding to desktop or
a gadget bar.
this gets rid of that annoying freeze in e due to the sync save and
possibly sync dns lookups in curl. slave binary handles it now and
talks back to e via stdout.
this also splits up the code into more files for specific purposes to
make it easier to add features to and maintain. given on the todo is
the ability to explicitly select a crop region and do some basic
"drawing" too, this sets the stage for that and it made it easier to
do the above upload/save tool.
After the work on the sysinfo gadgets for Linux the BSD variant
code was a little bit of an afterthought. These changes provide
us with unlimited battery/sysinfo gadgets and reliable status
for our battery or batteries and our power supply.
This patch allows us to add and remove (many) batman gadgets to
the desktop without negatively affecting existing instances.
It also takes into account additional sysinfo gadgets that include
a batman instance.
Iterating through the existing array of sysinfo gadgets to find
multiple instances and apply changes it not ideal but it does
not affect the Linux code, and keeps this change relatively
simple.
Tested on FreeBSD and OpenBSD with various hardware setups.
Thanks to Peter2121 (Quelrond) for his testing.
There is work to now improve batman's Linux behaviour to match that
of the behaviour on BSD systems.
This adds support for multiple batteries on FreeBSD in line with
Linux and OpenBSD. Also display the vendor and model where
applicable. There are also fixes specific to the sysctl interface.
Fixes a potential crash and let's us have 100 batman gadgets if
wanted.
many steam games don't provide much in properites - not enough to
match to a desktop file. the only thing that actually consistently
works is to use the STEAM_GAME property and match thyat to the uri
provided to the steam command in the exec of the desktop file. this
actually can work. nothing else works reliably across the board.
and man can games be horrible and playing nice with desktops and
having poor properties. even steam itself is not good. i had to add a
workaround for that too to match steam-runtime explicitly. :(
with a timer it'll wait untuil after mainloop is running before it
times out and thus shows the dialog ensuring it appears once the
compositor is fully up. this should avoid weird sized windows.
@fix
if 1 parent has 2, 3 or 4 etc. transi3ents as immediate children we
reverse-stacked them. go to stacking them in order they are added
(which would normally bve creation order which makes more sense). this
stops some dialogs appearing intitally behind other dialogs that were
there before.
@fix
since now we basically bring everything up THEN start rendering once
we hit the main loop there is no point having init splash strings
anymore. it is no longer an external process. until e's compositor is
up you will see nothing anyway. if it is up these days we've finished
init as a smoothing out of startup has move everything before main
loop starts. so this code is all kind of useless, thus remove. cleanup
code.
new feature - polkit auth agent support partly in core (need to have
the pam setuid root auth tool respond via dbus) and partly a module
(the agent dbus protocol handling and setup as well as auth gui). this
took me a while even with all the docs to work out how polkit works...
it was really fussy and its data structs are an extra pain in the butt
to craft with eldbus, but i managed it. not everything is supported
but the core basics are there and this can be built on.
right now the gui is really basic, but does the job.
still have a problem - cant work in wl drm/kms mode because e still
holds the ownership/lock on the console, but using full efl to draw
the alert and even blink it...
this drops xcb requirement too.
using just evas_gl_new() will lead to almost always using just
software rendering... because often osmesa is not installed and e will
start in software rendering by default until it switches properly
after the wizard. this appropriately checks in an x path vs. wayland
path in different ways as to if we should do gl by default and ALWAYS
offers a checkbox to the user, just the default value/state of that
checkbox depends on what is detected and a user can override.