Feature #113: Set opacity based on conditions

- Add --opacity-rule, which sets opacity based on conditions, as
  requested by zabbal. (#113)

- Add a data field for each condition.

- Correct the FAQ link in README.md. Silly me.

- Code clean-up.
This commit is contained in:
Richard Grenville
2013-05-21 09:18:41 +08:00
parent 07bc7485c3
commit 75ebd56f74
6 changed files with 116 additions and 8 deletions

View File

@@ -546,6 +546,8 @@ typedef struct {
bool inactive_dim_fixed;
/// Conditions of windows to have inverted colors.
c2_lptr_t *invert_color_list;
/// Rules to change window opacity.
c2_lptr_t *opacity_rules;
// === Focus related ===
/// Consider windows of specific types to be always focused.
@@ -921,6 +923,7 @@ typedef struct _win {
const c2_lptr_t *cache_fcblst;
const c2_lptr_t *cache_ivclst;
const c2_lptr_t *cache_bbblst;
const c2_lptr_t *cache_oparule;
// Opacity-related members
/// Current window opacity.
@@ -933,6 +936,8 @@ typedef struct _win {
/// broken window managers not transferring client window's
/// _NET_WM_OPACITY value
opacity_t opacity_prop_client;
/// Last window opacity value we set.
long opacity_set;
// Fading-related members
/// Do not fade if it's false. Change on window type change.
@@ -2027,14 +2032,20 @@ opts_set_no_fading_openclose(session_t *ps, bool newval);
///@{
c2_lptr_t *
c2_parse(session_t *ps, c2_lptr_t **pcondlst, const char *pattern);
c2_parsed(session_t *ps, c2_lptr_t **pcondlst, const char *pattern,
void *data);
#define c2_parse(ps, pcondlst, pattern) c2_parsed((ps), (pcondlst), (pattern), NULL)
c2_lptr_t *
c2_free_lptr(c2_lptr_t *lp);
bool
c2_match(session_t *ps, win *w, const c2_lptr_t *condlst,
const c2_lptr_t **cache);
c2_matchd(session_t *ps, win *w, const c2_lptr_t *condlst,
const c2_lptr_t **cache, void **pdata);
#define c2_match(ps, w, condlst, cache) c2_matchd((ps), (w), (condlst), \
(cache), NULL)
#endif
///@}