Commit Graph

45 Commits

Author SHA1 Message Date
Tomas Janousek
ae97c1f107 CHANGES: Mention recompilation improvements 2021-08-17 10:46:07 +01:00
Tomas Janousek
9813e218b0 Move config binary and GHC intermediate outputs to cacheDir
That's where they belong. As XDG was more or less broken in previous
xmonad releases, we can assume few people use it so now's the best time
to move files around.

For users of `~/.xmonad`, this only causes intermediate outputs (.o,
.hi) to go elsewhere.

Fixes: https://github.com/xmonad/xmonad/issues/178
2021-08-17 10:46:07 +01:00
Yecine Megdiche
92d01e37a0 Broadcast DestroyWindowEvent to layouts
Some layout and layout modifiers that keep track of some window
properties don't do garbage collection and update their state when
windows are destroyed. By broadcasting this event, it should be easier
for layouts to clean up

Related: https://github.com/xmonad/xmonad-contrib/pull/474
2021-07-31 15:24:31 +01:00
Matt Zrinsky
1a4c95fac8 Add help command to help message.
Attempt to contribute to xmonad,
and add a simple line to the help message,
containing the help command itself.

Fixes xmonad/xmonad#287
2021-07-02 13:58:00 -05:00
slotThe
5b064f474d Update CHANGES.md 2021-06-04 18:17:11 +01:00
Tomas Janousek
d620639f7d Add support for extensible config in contrib modules
It's often difficult to make contrib modules work together. When one
depends on a functionality of another, it is often necessary to expose
lots of low-level functions and hooks and have the user combine these
into a complex configuration that works. This is error-prone, and
arguably a bad UX in general.

This commit presents a simple solution to that problem inspired by
"extensible state": extensible config. It allows contrib modules to
store custom configuration values inside XConfig. This lets them create
custom hooks, ensure they hook into xmonad core only once, and possibly
other use cases I haven't thought of yet.

For more, see the related pull request to xmonad-contrib.

Related: https://github.com/xmonad/xmonad-contrib/pull/547
2021-05-17 17:46:48 +01:00
Tomas Janousek
56f810d182 GenerateManpage: Drop all dependencies except base and invoke in CI
pandoc's API changes often enough that distros like Debian were patching
our GenerateManpage.hs to work with their version of pandoc, and it
doesn't build against any Stackage LTS except the recently released
LTS-17. Also, building pandoc from source takes quite some time and
resources.

But for what benefit? We're not using any special pandoc functionality
whatsoever. It's just that it was all in Haskell and the entire build
was orchestrated by cabal, but is all that complexity and resource
consumption worth it? I think not.

(Frankly, this whole thing was just a massive waste of time as the help
text in Config.hs isn't generated at all, so we still need to do this
manually. And then, the default key-bindings in core are unlikely to
change ever again.)

Let's simplify this:

* drop all dependencies except base and just run it through runhaskell

* add a Makefile and GH Actions workflow that invokes this after push

* only ship the results in release tarball, not the scripts which are
  considered our dev infrastructure

Closes: https://github.com/xmonad/xmonad/issues/283
Related: https://github.com/xmonad/xmonad/pull/260
Related: https://github.com/xmonad/xmonad/pull/261
Related: https://github.com/xmonad/xmonad/pull/265
Related: https://github.com/xmonad/xmonad/pull/266
Related: https://github.com/xmonad/xmonad/pull/267
Related: https://github.com/xmonad/xmonad/pull/268
2021-04-27 11:05:32 +01:00
Tomas Janousek
910d99cb74 Update CHANGES 2021-04-03 17:13:25 +01:00
Tomas Janousek
b9ce5b034b Fix obscuring notifications when moving floats
Since 4565e2c90e, not only do we raise the floating window to top when
starting dragging, we also restack all other managed windows directly
below it (mouse{Move,Resize}Window now call `float` while dragging,
which invoke `windows` and that restacks all windows). This means that
as soon as we start dragging, all xmonad-managed windows are raised to
the top, obscuring any unmanaged (override-redirect) windows that were
at the top before.

The good thing about 4565e2c90e is that since we refloat and refresh
on every mouse move while dragging, we no longer need the `raiseWindow`.
It was probably only there so that it stays visible when dragging
between Xinerama screens (3cb64d7461), and that's taken care of by
refloating the window on every move. As the refresh restacks everything
anyway, the only function of the `raiseWindow` is to stack windows above
unmanaged ones, which is likely undesirable.

There is still one known issue related to obscuring notifications:
https://github.com/xmonad/xmonad/issues/89
That one is caused by X opening new windows at the top of stacking order
and xmonad then restacking all other windows directly beneath them if
the new window is in the master position of the stack. Some notification
daemons like dunst work around this by raising themselves whenever a new
window is opened
(77bfbc4f7f/src/x11/x.c (L348)).
Fixing this one is considerably more complicated as we'd need to keep
track of (unmanaged) windows that wish to be stacked above new windows,
therefore this won't be addressed here, and probably won't be addressed
in xmonad core ever.

Fixes: https://github.com/xmonad/xmonad/issues/208
Fixes: 4565e2c90e ("fix #63: window jumping to origin position when dragging")
2021-02-16 12:00:28 +00:00
Keith
f5bd77a7f8 made ScreenDetail a newtype and RationalRect strict in its contents. 2021-01-19 12:06:07 -05:00
slotThe
70a75e5e3f Update documentation 2021-01-07 17:25:30 +01:00
Vanessa McHale
ec1c3e0159 update changelog 2020-12-31 20:19:10 -06:00
slotThe
b3c860b892 Rename LR to CLR
Some modules in xmonad-contrib define their own LR type with L and R as
data constructors, leading to build failures; this fixes that.
2020-12-13 17:23:14 +01:00
Felix Springer
30f2d9f325 Merge branch 'master' into master 2020-12-08 16:41:36 +01:00
Tomas Janousek
6dc1e319d1 Make layouts Typeable
This makes it possible to query the current layout state, which might be
useful to e.g. show the current X.L.WorkspaceDir in xmobar.

Example of use (assuming myLayout is the layout that is assigned to
layoutHook):

    asMyLayout (Layout l) = (`asTypeOf` myLayout) <$> cast l

    …

    layout <- asMyLayout . W.layout . W.workspace . W.current <$> gets windowset
    case layout of
        Just (WorkspaceDir d) -> …

Unfortunately this requires adding the Typeable constraint to a bunch of
classes in xmonad-contrib, so we need to merge those changes there first
(fortunately it doesn't need to go in lockstep, adding a Typeable
constraint to those classes in xmonad-contrib is harmless).
2020-11-04 15:28:04 +00:00
Tomas Janousek
f8b243b66e Use current screen to set dimensions of new floating windows
This fixes a bug when using multiple screens with different dimensions,
causing some floating windows to be smaller/larger than the size they
requested.

Some applications (e.g. pinentry) always map their window at (0, 0) so
floatLocation would compute the window size relative to the screen
containing (0, 0) and if the current workspace is on another screen with
a different size, this relative size results in a different absolute
size, which is undesirable for fixed size floats.

Other applications like ssh-agent place their window at the center of
the framebuffer (ignoring xinerama layout). Same problem.

Then there are apps that remember their position/size when minimizing to
tray and then attempt to restore it when reopened. Again, if they
restore it on another screen, we miscalculate the size.

The fix is to use the current screen for calculating dimensions of new
(not yet mapped) floating windows.

Co-Authored-By: Vincent Vinel <narthorn@gmail.com>
2020-05-13 20:11:32 +02:00
Felix Springer
fa9a3abe49 Allow pattern-matching on 'XMonad.Layout.Choose' by exporting constructors 2020-03-31 22:46:56 +02:00
Peter Simons
bb13853929 Bump version number, update changelog, and re-generate the man page. 2018-09-30 13:34:01 +02:00
Peter Simons
e8133eb9a6 CHANGES.md: add an entry for the 0.14.2 version 2018-08-24 12:11:20 +02:00
Peter Simons
c0cf91303f Tentatively bump version number to 0.14.1. 2018-08-20 13:49:34 +02:00
Peter Simons
80f1c6f027 CHANGES.md: move PR entries into the right section 2018-08-20 13:49:34 +02:00
Peter Simons
c54e7088f0 Merge pull request #167 from mgsloan/log-recompilation-info
Log information about xmonad compile + avoid unnecessary recompile
2018-08-20 13:49:10 +02:00
Peter Simons
425c3c0872 Core: derive 'MonadFail X' instance for GHC 8.6.x and beyond
A side effect of that change is that our code no longer compiles with GHC
versions prior to 8.0.x. We could work around that, no doubt, but the resulting
code would require CPP and Cabal flags and whatnot. It feels more reasonable to
just require a moderately recent compiler instead of going through all that
trouble.
2018-08-20 10:40:03 +02:00
Peter Simons
5caf235f6b CHANGES.md: document recent changes 2018-07-30 12:42:16 +02:00
Peter Simons
55b14d4850 Bump version number to 0.14 for upcoming release. 2018-07-30 09:29:12 +02:00
Michael Sloan
b6d92b4e38 Log information about xmonad compile + avoid unnecessary recompile
Particularly with the addition of build scripts, it can be tricky to figure out
what XMonad is doing when attempting recompilation.  This makes it clearer by
adding some logging.

Due to this logging, I noticed that the lag of xmonad start was because it was
always recompiling!  When I startup my computer, I do not want it to delay
rebuilding my window manager. This also fixes that issue such that it only
recompiles XMonad if it is going to reinvoke due to getProgName not being the
expected string.
2018-05-09 18:41:46 -07:00
Brent Yorgey
2d59f5157c update GHC version number to 8.4.1 2018-03-21 14:58:25 -05:00
Brent Yorgey
63d6a66133 Merge branch 'master' into master 2018-03-21 14:52:50 -05:00
Michiel Derhaeg
126f891d11 restored compatability with GHC versions prior to 8.0.1 2018-03-17 23:23:11 +01:00
Vanessa McHale
d3383ce0f5 make it work w/ xmonad-testing 2018-02-05 18:29:14 -06:00
Javran Cheng
462957b2f0 fix xmonad/xmonad#87
switch focus when mouse is entering a workspace
but not moving into a window (w' == 0)

for magic number 0 in w' == 0
see discussion in https://github.com/xmonad/xmonad/pull/88#pullrequestreview-62489502
2017-09-13 19:28:02 -04:00
Peter Jones
89a8cc88c3 Remove the xmonad state file after reading it
Tries to make sure IO is not lazy so the file is processed before it
is removed from the file system.

Fixes #86 and friends.
2017-03-30 16:19:26 -07:00
Peter Jones
8f2eb540d7 Update documentation after final release review 2017-02-10 15:48:44 -07:00
Peter Jones
acf0652952 Add a release date 2017-02-09 16:25:41 -07:00
Felix Hirn
2e5ae02059 Updated CHANGES.md 2017-02-09 22:34:26 +01:00
Peter Jones
f18bda7dc7 Having an executable build script implies force = True' in recompile'
This is slight change to the original implementation.  This version
forces a recompile if XMonad detects a custom build script.  The
previous version took into consideration the time stamps of the source
files.

For a custom build script, the source files may be located in another
location, or there could be dependencies unknown to XMonad.  Better to
just always call the build script and let it work out if something
needs to be built.
2017-02-08 19:48:42 -07:00
Peter Jones
2baab28602 When looking for a directory, prefer ~/.xmonad over XDG BDS
This fixes issue #71
2017-02-07 13:28:53 -07:00
Peter Jones
e1c555e3e6 Implement recommendations from Brent's review 2017-01-03 15:46:07 -07:00
Peter Jones
ab20f7df8d Stop using the term XDG unqualified
This change makes it clear that xmonad can use the "XDG Base Directory
Specification" a la the directory package without making any other XDG
claims.
2017-01-03 15:15:26 -07:00
Peter Jones
d6b6189cc1 Add release notes for changes in this PR 2017-01-03 15:15:23 -07:00
Philipp Balzarek
0b1ccc75ef update CHANGES.md 2016-12-10 11:21:06 +01:00
Peter Jones
45a78ba802 Finial tweaks before release 2015-12-14 13:30:55 -07:00
Peter Jones
73224be21b Bring in entries from https://wiki.haskell.org/Xmonad/Notable_changes_since_0.11 2015-12-09 12:54:14 -07:00
Peter Jones
60f472faa2 Fix a couple of links (darcs -> git) 2015-12-08 16:28:56 -07:00
Peter Jones
bd72c6e1e2 Add CHANGES.md 2015-12-08 13:50:20 -07:00