Compare commits
1266 Commits
release-2.
...
gnome-3-2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c39cc61c42 | ||
![]() |
44c5b9e460 | ||
![]() |
ea007408fe | ||
![]() |
a7fbf7e1f1 | ||
![]() |
1ec9ae2264 | ||
![]() |
aac695f326 | ||
![]() |
12a5e1c02b | ||
![]() |
974be1035e | ||
![]() |
a22add8fbb | ||
![]() |
acc4e03482 | ||
![]() |
e176a9e891 | ||
![]() |
0b36663ff1 | ||
![]() |
bb035fe6e0 | ||
![]() |
6d0c1f08d2 | ||
![]() |
f700a7be07 | ||
![]() |
138eb1e3b4 | ||
![]() |
c39129b6e8 | ||
![]() |
bf175e72ad | ||
![]() |
ba31ba4615 | ||
![]() |
f94f008ed6 | ||
![]() |
9d4f3c5842 | ||
![]() |
0b2a9d58e0 | ||
![]() |
28deea44d4 | ||
![]() |
f82966adb5 | ||
![]() |
9f54f1d75d | ||
![]() |
be9f7d7729 | ||
![]() |
1b4dce6f84 | ||
![]() |
3bb17f0671 | ||
![]() |
19d111a27b | ||
![]() |
289561ddf3 | ||
![]() |
d2ca160ea3 | ||
![]() |
cd19f9239c | ||
![]() |
16157ad522 | ||
![]() |
d37a692392 | ||
![]() |
f78f33d848 | ||
![]() |
c4692b8d51 | ||
![]() |
764569eb7a | ||
![]() |
aab0d2f54e | ||
![]() |
24678de261 | ||
![]() |
1b71eeb02a | ||
![]() |
bfc6a2b078 | ||
![]() |
9c9da8f575 | ||
![]() |
d1a87288a4 | ||
![]() |
e7c65d9404 | ||
![]() |
00e49b330c | ||
![]() |
7c6bc73031 | ||
![]() |
c1368155fc | ||
![]() |
d305174ecc | ||
![]() |
6b7391bca9 | ||
![]() |
4e99c38491 | ||
![]() |
6087a71951 | ||
![]() |
5f1c3de29a | ||
![]() |
abde64cb0c | ||
![]() |
6923973c8a | ||
![]() |
d7f1b95349 | ||
![]() |
4a5c7ee4cc | ||
![]() |
f3bb16f301 | ||
![]() |
d6b528a955 | ||
![]() |
7ba6503e9b | ||
![]() |
9ee7783759 | ||
![]() |
2dc5693c60 | ||
![]() |
a1ef22e0d7 | ||
![]() |
19b6888ea5 | ||
![]() |
9520eaa970 | ||
![]() |
088e0c1ee7 | ||
![]() |
de704386a1 | ||
![]() |
766799ec6d | ||
![]() |
7c50db5bf5 | ||
![]() |
7223c4e184 | ||
![]() |
b0a9c391a1 | ||
![]() |
5c7158792f | ||
![]() |
9c71d23884 | ||
![]() |
e1362562b4 | ||
![]() |
1ab6abc044 | ||
![]() |
bf4f3a8a99 | ||
![]() |
f9626d2db6 | ||
![]() |
28b59589ca | ||
![]() |
fb10910e66 | ||
![]() |
6d2efe9460 | ||
![]() |
f587595765 | ||
![]() |
5e6e8728c3 | ||
![]() |
f620f1b466 | ||
![]() |
818320e748 | ||
![]() |
fc2e7e94a5 | ||
![]() |
a47e35ba2e | ||
![]() |
07d8b2d510 | ||
![]() |
6329aeac11 | ||
![]() |
af1fef03f4 | ||
![]() |
f778cf0ea3 | ||
![]() |
7af6aa9739 | ||
![]() |
faae2daae8 | ||
![]() |
0b4cc14aa6 | ||
![]() |
622583a0d5 | ||
![]() |
2f33d85a41 | ||
![]() |
3abb651325 | ||
![]() |
ada8882b61 | ||
![]() |
d3831729a0 | ||
![]() |
05fee9beea | ||
![]() |
e4da6495d3 | ||
![]() |
8c74ad1992 | ||
![]() |
88064fd534 | ||
![]() |
b28c6533f8 | ||
![]() |
53e70b3e99 | ||
![]() |
c630046858 | ||
![]() |
a75c4d2cc9 | ||
![]() |
368a90c82a | ||
![]() |
2be1574e55 | ||
![]() |
7f8c59614e | ||
![]() |
3650e9b074 | ||
![]() |
978e601217 | ||
![]() |
dcfa6986c6 | ||
![]() |
49a3fd53b0 | ||
![]() |
d33d113746 | ||
![]() |
f83568fc4e | ||
![]() |
46415bb248 | ||
![]() |
5123a1fb03 | ||
![]() |
19f4a5c819 | ||
![]() |
69e9b70829 | ||
![]() |
443ca1cc02 | ||
![]() |
9a5f4a3346 | ||
![]() |
16a40dde7b | ||
![]() |
36e6e65778 | ||
![]() |
b3bf2e08f3 | ||
![]() |
3ec500937f | ||
![]() |
c45c4af5da | ||
![]() |
a485685867 | ||
![]() |
08363f4d9b | ||
![]() |
2f254e5aa3 | ||
![]() |
e0e78993f6 | ||
![]() |
eeb2efe010 | ||
![]() |
be4ef9b43d | ||
![]() |
a133d8b42e | ||
![]() |
a1a2527c75 | ||
![]() |
6f5882302f | ||
![]() |
ce9c7a210d | ||
![]() |
e0fb83c691 | ||
![]() |
7e0a56fb80 | ||
![]() |
65e1b416ef | ||
![]() |
183bcd6fc7 | ||
![]() |
f76372dd7d | ||
![]() |
9c493ab56a | ||
![]() |
a17f73a020 | ||
![]() |
6ff9cae2b1 | ||
![]() |
d3edcbc11e | ||
![]() |
779ef582f1 | ||
![]() |
385887c55b | ||
![]() |
f396a7aeb4 | ||
![]() |
ffa2310a34 | ||
![]() |
fccd626604 | ||
![]() |
5237b2aa65 | ||
![]() |
b1ae599c39 | ||
![]() |
3f694c7335 | ||
![]() |
3da2f876bd | ||
![]() |
a6d08fcd71 | ||
![]() |
73d22a273e | ||
![]() |
24843f277f | ||
![]() |
4167ef870c | ||
![]() |
cd7a968093 | ||
![]() |
12f71c9795 | ||
![]() |
b369c75e1b | ||
![]() |
739eade4fa | ||
![]() |
d2b63eaf1f | ||
![]() |
47b432bf89 | ||
![]() |
b70ccd2a56 | ||
![]() |
be8df20675 | ||
![]() |
4a10c95e76 | ||
![]() |
54b2fab849 | ||
![]() |
8033184134 | ||
![]() |
d95da2dfbe | ||
![]() |
03457029f7 | ||
![]() |
f8d900c3ea | ||
![]() |
e16beba111 | ||
![]() |
60ee25d8d5 | ||
![]() |
ce1369609f | ||
![]() |
8199699e7c | ||
![]() |
48cabd1364 | ||
![]() |
6dc79ce60a | ||
![]() |
a8cfdc19e2 | ||
![]() |
db4ae415e3 | ||
![]() |
7842d92995 | ||
![]() |
b34c01a95a | ||
![]() |
e4546829e3 | ||
![]() |
8dc3de87ad | ||
![]() |
e3094ace05 | ||
![]() |
6f49a00bbe | ||
![]() |
b5f277bd7b | ||
![]() |
f798144bea | ||
![]() |
699fb0d0f1 | ||
![]() |
5b84f62a89 | ||
![]() |
3209e88c6f | ||
![]() |
0202a0837d | ||
![]() |
2b93c19328 | ||
![]() |
66a830fd46 | ||
![]() |
d752096cdf | ||
![]() |
fe12294b92 | ||
![]() |
61b5cfece4 | ||
![]() |
ec5fb2a4ad | ||
![]() |
cdabd517fa | ||
![]() |
ebfe9a0355 | ||
![]() |
c1a5261e2f | ||
![]() |
c18940a5a2 | ||
![]() |
b533ad2669 | ||
![]() |
526bc34bba | ||
![]() |
35d300b916 | ||
![]() |
c70087db0c | ||
![]() |
9804841adb | ||
![]() |
aa92aa08bd | ||
![]() |
15e55b2ca1 | ||
![]() |
4257b8deff | ||
![]() |
e21e2c892a | ||
![]() |
05662b678e | ||
![]() |
64f37a3769 | ||
![]() |
7c9f492584 | ||
![]() |
7577437167 | ||
![]() |
be6775767c | ||
![]() |
0d9a9b8d3b | ||
![]() |
4affd22817 | ||
![]() |
eb17cd9ba9 | ||
![]() |
0cdac78bd5 | ||
![]() |
4f3b03e13b | ||
![]() |
da4486b833 | ||
![]() |
37aeb5baf1 | ||
![]() |
a2cb38b382 | ||
![]() |
c573523c4d | ||
![]() |
64e6b77dc3 | ||
![]() |
d0414a3ea6 | ||
![]() |
6596374886 | ||
![]() |
7d70343c6d | ||
![]() |
cb87908dca | ||
![]() |
95f33b36a7 | ||
![]() |
d246d1c971 | ||
![]() |
89dbef9eb3 | ||
![]() |
60dd31ed48 | ||
![]() |
40f51114b5 | ||
![]() |
d9007a08c9 | ||
![]() |
3d05405a78 | ||
![]() |
1ca697a130 | ||
![]() |
c248c57b6e | ||
![]() |
67c3c93b8f | ||
![]() |
c3a04bf394 | ||
![]() |
c30c29b8c3 | ||
![]() |
5eb8aa655b | ||
![]() |
3543782f39 | ||
![]() |
4ff4ebebb6 | ||
![]() |
a3c96c12d6 | ||
![]() |
eb0e658c99 | ||
![]() |
4d069650ae | ||
![]() |
d176755926 | ||
![]() |
eb2a6946b2 | ||
![]() |
d067ba4431 | ||
![]() |
fdf11f10fb | ||
![]() |
8fd1835d1a | ||
![]() |
c77075833a | ||
![]() |
b2a7ab270c | ||
![]() |
7503d4812c | ||
![]() |
1fd8b0b4c5 | ||
![]() |
8615cf88ab | ||
![]() |
f73a13dc4a | ||
![]() |
f973e2effa | ||
![]() |
f9fed16608 | ||
![]() |
0578ed0c86 | ||
![]() |
61520f5bd6 | ||
![]() |
be853ec931 | ||
![]() |
440b92adf0 | ||
![]() |
8fa4d22937 | ||
![]() |
397ae90d5c | ||
![]() |
7f97d0bdc5 | ||
![]() |
14956abb6e | ||
![]() |
61cea18ff0 | ||
![]() |
83a449df95 | ||
![]() |
9c683aaea9 | ||
![]() |
634b76b82c | ||
![]() |
a3ea43da52 | ||
![]() |
f464b85ffc | ||
![]() |
db055c6029 | ||
![]() |
eedc74943b | ||
![]() |
82b134ed46 | ||
![]() |
cc1de7e7d0 | ||
![]() |
a199d74069 | ||
![]() |
7a23d3024a | ||
![]() |
734888406c | ||
![]() |
e0ce24b3f5 | ||
![]() |
c13e62f72c | ||
![]() |
3d958de33e | ||
![]() |
4689688af3 | ||
![]() |
d402a68c73 | ||
![]() |
66d1dd3679 | ||
![]() |
43e48fc962 | ||
![]() |
1fea2a5101 | ||
![]() |
92e317ec2a | ||
![]() |
c5d1d2db62 | ||
![]() |
b1725bc18c | ||
![]() |
5500c2b3a8 | ||
![]() |
82db52aaf4 | ||
![]() |
654d966e6c | ||
![]() |
92663c81f5 | ||
![]() |
e3ebcc004d | ||
![]() |
26e41bc24a | ||
![]() |
c9e9412540 | ||
![]() |
14d6d63ad0 | ||
![]() |
2134213f92 | ||
![]() |
1935e508f7 | ||
![]() |
83b6ec7899 | ||
![]() |
9c0ffc26c1 | ||
![]() |
39b28a7e42 | ||
![]() |
09799c6617 | ||
![]() |
9fad2246ae | ||
![]() |
585da56118 | ||
![]() |
cccb482cd9 | ||
![]() |
eb79c75266 | ||
![]() |
19171122ca | ||
![]() |
a4665b1a14 | ||
![]() |
829f9ac61f | ||
![]() |
24b846328f | ||
![]() |
96c43866b1 | ||
![]() |
9043191927 | ||
![]() |
6e6ed81c19 | ||
![]() |
3597035f67 | ||
![]() |
9f39a18fc5 | ||
![]() |
ab2de9dccd | ||
![]() |
d66c6cf55e | ||
![]() |
4f24f7e5fc | ||
![]() |
3cd0e86bdd | ||
![]() |
4d230daf09 | ||
![]() |
9dd642f4af | ||
![]() |
a9f9176ba5 | ||
![]() |
637cce0f91 | ||
![]() |
74b97dcd14 | ||
![]() |
4e28a4d654 | ||
![]() |
9d62d13f88 | ||
![]() |
eeca838778 | ||
![]() |
d6f0d2c64c | ||
![]() |
44cfceba00 | ||
![]() |
349fb7c297 | ||
![]() |
f9b5cdfeb1 | ||
![]() |
de8eb1f8ee | ||
![]() |
0ff602be06 | ||
![]() |
7246d0ede2 | ||
![]() |
50468b6563 | ||
![]() |
6793236642 | ||
![]() |
d8ccc7896f | ||
![]() |
defd9aed32 | ||
![]() |
6ee1d4348d | ||
![]() |
27dbd12d7b | ||
![]() |
93fc5c5561 | ||
![]() |
b48d290064 | ||
![]() |
6bdb3cf115 | ||
![]() |
3b39026ba2 | ||
![]() |
70ffb564ff | ||
![]() |
4760d043d3 | ||
![]() |
8405e75931 | ||
![]() |
6c4a283b4c | ||
![]() |
7c6b55e79e | ||
![]() |
d8c4b22b88 | ||
![]() |
bbd98e7b86 | ||
![]() |
0536438317 | ||
![]() |
e2151a5fd7 | ||
![]() |
c84da3ce1b | ||
![]() |
bb50f65532 | ||
![]() |
28752718c5 | ||
![]() |
4c76791d4c | ||
![]() |
a66ae4ad55 | ||
![]() |
7841e80496 | ||
![]() |
27626d14b7 | ||
![]() |
f75e96cd3c | ||
![]() |
9bc1521615 | ||
![]() |
f2158218be | ||
![]() |
183190d089 | ||
![]() |
ebc3775f19 | ||
![]() |
97d7e84a04 | ||
![]() |
2b2b728b64 | ||
![]() |
46fa843b0e | ||
![]() |
e7d336ab0e | ||
![]() |
6e23b0af3b | ||
![]() |
735c33bd9f | ||
![]() |
47626a17d7 | ||
![]() |
ce86d3f230 | ||
![]() |
31878239c3 | ||
![]() |
1133a4ff9c | ||
![]() |
5822443b20 | ||
![]() |
cf05167c55 | ||
![]() |
a9504f1495 | ||
![]() |
3716c30264 | ||
![]() |
c1bf1ec718 | ||
![]() |
8b220079d0 | ||
![]() |
2df95970d9 | ||
![]() |
a4569974a1 | ||
![]() |
c9d3ab772c | ||
![]() |
1a276a2ee5 | ||
![]() |
4c4c720dc1 | ||
![]() |
ad707be01e | ||
![]() |
19d1f97600 | ||
![]() |
4f079affea | ||
![]() |
b4888103a6 | ||
![]() |
e2364b82ef | ||
![]() |
ba92645044 | ||
![]() |
2eb8b09b1a | ||
![]() |
bca610ed50 | ||
![]() |
53d6938b55 | ||
![]() |
286160646b | ||
![]() |
58068260a5 | ||
![]() |
57e8ce0d42 | ||
![]() |
4ed1e8b3e2 | ||
![]() |
8181454af5 | ||
![]() |
aa482e6d4f | ||
![]() |
0c9b2c6757 | ||
![]() |
bbfc435a5c | ||
![]() |
7e53094044 | ||
![]() |
565f002bc4 | ||
![]() |
42fdd4f4d8 | ||
![]() |
217aa2898e | ||
![]() |
02e7c1bb2b | ||
![]() |
bb57a8b6f3 | ||
![]() |
65d0f1a213 | ||
![]() |
4344b7ba69 | ||
![]() |
b0072add05 | ||
![]() |
4ea00e102b | ||
![]() |
ed99d12e8b | ||
![]() |
0a2bb1b71c | ||
![]() |
4bc8c70c75 | ||
![]() |
9f2581318a | ||
![]() |
48b9807c86 | ||
![]() |
0a821d2341 | ||
![]() |
78092a404f | ||
![]() |
d3df33ecdb | ||
![]() |
1160744830 | ||
![]() |
e884fc784e | ||
![]() |
c16788f481 | ||
![]() |
a1790fb6a8 | ||
![]() |
cbce4fd39d | ||
![]() |
93c0620151 | ||
![]() |
2faf56947b | ||
![]() |
53777b133b | ||
![]() |
594a69317a | ||
![]() |
3f9c375f1c | ||
![]() |
544c8edd9e | ||
![]() |
654bd15319 | ||
![]() |
b85171007e | ||
![]() |
f6ec33fa0c | ||
![]() |
7d0ff87cbe | ||
![]() |
8994e621f7 | ||
![]() |
d746591894 | ||
![]() |
161c1088f9 | ||
![]() |
07c0471902 | ||
![]() |
5f4ee1b6e7 | ||
![]() |
aa3a4a48e4 | ||
![]() |
0d27c9600f | ||
![]() |
1986b20499 | ||
![]() |
e7a10b0d6a | ||
![]() |
6b98644c58 | ||
![]() |
5397335ae8 | ||
![]() |
0b6d6e517d | ||
![]() |
b031543f5a | ||
![]() |
c6be05f9d7 | ||
![]() |
cb88e0d052 | ||
![]() |
54e82daae2 | ||
![]() |
1394c566eb | ||
![]() |
3183d954a0 | ||
![]() |
67b89e5c86 | ||
![]() |
c88c94886b | ||
![]() |
c1f6902cb9 | ||
![]() |
8817e68926 | ||
![]() |
b1868fb213 | ||
![]() |
6260814285 | ||
![]() |
07e6c5aac2 | ||
![]() |
0477a3066d | ||
![]() |
59639909b1 | ||
![]() |
64c37852b1 | ||
![]() |
bac668d287 | ||
![]() |
f372fa29b2 | ||
![]() |
8b24711bba | ||
![]() |
d4c28fc5f5 | ||
![]() |
ca5f2ac3ec | ||
![]() |
15f9590427 | ||
![]() |
21a246eb42 | ||
![]() |
1bbaec81ce | ||
![]() |
7952feb48b | ||
![]() |
52aebdf223 | ||
![]() |
6b16604c26 | ||
![]() |
3c4d52732e | ||
![]() |
d56d267f7d | ||
![]() |
8eb31944a5 | ||
![]() |
ed2fbcd13a | ||
![]() |
9f4942e9a7 | ||
![]() |
982a10ac44 | ||
![]() |
e59a9872b4 | ||
![]() |
9aedd32e01 | ||
![]() |
dd0ca4dd60 | ||
![]() |
3e7d2df6f3 | ||
![]() |
02e709e89e | ||
![]() |
1114e5effa | ||
![]() |
c40fab214d | ||
![]() |
441c050808 | ||
![]() |
85425f64a5 | ||
![]() |
b445ee3763 | ||
![]() |
95a7f0269a | ||
![]() |
db63764e22 | ||
![]() |
03578b69f3 | ||
![]() |
8cbaee47a0 | ||
![]() |
bcded5ae25 | ||
![]() |
7227b636c6 | ||
![]() |
af715f71e7 | ||
![]() |
52bc675fcb | ||
![]() |
1920f211b0 | ||
![]() |
804117c456 | ||
![]() |
9a4d1686a6 | ||
![]() |
e8dda03441 | ||
![]() |
4b214b4710 | ||
![]() |
6ed34976c9 | ||
![]() |
069092eb9d | ||
![]() |
dc7d323295 | ||
![]() |
cbedfd680f | ||
![]() |
a1e2e2a13d | ||
![]() |
a53a40c43e | ||
![]() |
33489c8cb8 | ||
![]() |
c382d8f7ea | ||
![]() |
f2ccf70f8d | ||
![]() |
ff04e38326 | ||
![]() |
1123fca3f2 | ||
![]() |
33e2d15495 | ||
![]() |
b265e8099a | ||
![]() |
a2b3f9aeb0 | ||
![]() |
d19295a68e | ||
![]() |
9f5d8d1a2a | ||
![]() |
e75abacec6 | ||
![]() |
1c31e8ffc2 | ||
![]() |
1083a4c0b7 | ||
![]() |
d212be799a | ||
![]() |
84986c7695 | ||
![]() |
aa65f94c67 | ||
![]() |
dc80242e51 | ||
![]() |
f2c63e5eec | ||
![]() |
1fc91dc459 | ||
![]() |
a2e4789b3e | ||
![]() |
7d58524185 | ||
![]() |
635e20d057 | ||
![]() |
1c3f7c4088 | ||
![]() |
5c3b0cda2e | ||
![]() |
a3c6486e52 | ||
![]() |
741d2b761a | ||
![]() |
a0ffe71db3 | ||
![]() |
ecf812db83 | ||
![]() |
afd3b96e2e | ||
![]() |
b79e6c0b3e | ||
![]() |
c6f8ad24bd | ||
![]() |
d4d05e496a | ||
![]() |
0a88329526 | ||
![]() |
b4344b5ab5 | ||
![]() |
4ac836fde4 | ||
![]() |
7897448a5b | ||
![]() |
94f4011844 | ||
![]() |
3f8e6020f7 | ||
![]() |
beb65f011d | ||
![]() |
c2f894963a | ||
![]() |
dacea8edf9 | ||
![]() |
3fed2ab64d | ||
![]() |
476652da0a | ||
![]() |
35289050e4 | ||
![]() |
ed9d7f18a6 | ||
![]() |
a7d1053ff5 | ||
![]() |
97e2b4666b | ||
![]() |
7d8cc4f940 | ||
![]() |
ee2f995fc7 | ||
![]() |
7e852f8c14 | ||
![]() |
b4c1692d14 | ||
![]() |
c0858b247f | ||
![]() |
0a956f56aa | ||
![]() |
66105c6e7e | ||
![]() |
bb1ab0afd9 | ||
![]() |
0d51d9e4cf | ||
![]() |
e3789e31ef | ||
![]() |
8a6b583cdc | ||
![]() |
86b8b9051f | ||
![]() |
4c0763792d | ||
![]() |
599eb5e3e4 | ||
![]() |
31fe25aa78 | ||
![]() |
252657905f | ||
![]() |
77a5e817a5 | ||
![]() |
2521e8103d | ||
![]() |
47fcb998f5 | ||
![]() |
455c40677b | ||
![]() |
9ae8e4c006 | ||
![]() |
d514516543 | ||
![]() |
1024eae742 | ||
![]() |
dad1f01c5b | ||
![]() |
ce53f35974 | ||
![]() |
3d19e800ab | ||
![]() |
2a54baf60e | ||
![]() |
4544fe7571 | ||
![]() |
a125b0179a | ||
![]() |
6b69acdf8b | ||
![]() |
8c11a2e5a3 | ||
![]() |
693c2bc175 | ||
![]() |
8b34b4bd0b | ||
![]() |
8cce57ba44 | ||
![]() |
63f81ed027 | ||
![]() |
c9ebc0ea25 | ||
![]() |
15a214e435 | ||
![]() |
0b3327f04d | ||
![]() |
0839c100c0 | ||
![]() |
08cfdcd802 | ||
![]() |
a1bb3835cc | ||
![]() |
e590cd2b99 | ||
![]() |
77b620e50e | ||
![]() |
9bc723d256 | ||
![]() |
b9f9a230e6 | ||
![]() |
ce1ffa4624 | ||
![]() |
17aa36d343 | ||
![]() |
cc0965f9f9 | ||
![]() |
0e728d7751 | ||
![]() |
3e6cf75d73 | ||
![]() |
bbedba8b18 | ||
![]() |
c8d756dde3 | ||
![]() |
97a8dbb71e | ||
![]() |
6835804dab | ||
![]() |
1a2a374380 | ||
![]() |
2b84afc1e3 | ||
![]() |
bb3d23f7f6 | ||
![]() |
7511ea27e2 | ||
![]() |
adbe3a2312 | ||
![]() |
eda50a91df | ||
![]() |
7853bb8042 | ||
![]() |
37de1b2d25 | ||
![]() |
0c4ac0b48a | ||
![]() |
c24cf44c6a | ||
![]() |
11a8ab47fa | ||
![]() |
7feeb72721 | ||
![]() |
01447d94d1 | ||
![]() |
e267a63330 | ||
![]() |
c65a24486d | ||
![]() |
42e786b15b | ||
![]() |
7a04673dd7 | ||
![]() |
c47d2da0cb | ||
![]() |
fd12eddb5d | ||
![]() |
0b56599d28 | ||
![]() |
27de94b915 | ||
![]() |
9e31f2b1de | ||
![]() |
13ad103823 | ||
![]() |
ff5a73de49 | ||
![]() |
275a6ec63f | ||
![]() |
604da0f6ea | ||
![]() |
72a19dd448 | ||
![]() |
3a73f6b8ec | ||
![]() |
343474a570 | ||
![]() |
91d82bf8c7 | ||
![]() |
ed19060074 | ||
![]() |
f230a67b94 | ||
![]() |
849f101feb | ||
![]() |
f45083ce82 | ||
![]() |
4c143ae9af | ||
![]() |
cd1a1d5778 | ||
![]() |
e28e7a72aa | ||
![]() |
fc9488211f | ||
![]() |
28767c4d34 | ||
![]() |
c6c7b05d7b | ||
![]() |
5526e91b6e | ||
![]() |
9e123695d0 | ||
![]() |
092cc47afc | ||
![]() |
fd20059f68 | ||
![]() |
609aae684f | ||
![]() |
49940877d1 | ||
![]() |
22ae86104b | ||
![]() |
f8dd4c160b | ||
![]() |
11061a23b1 | ||
![]() |
d8b0f213b2 | ||
![]() |
e9fbe4b2c1 | ||
![]() |
edcb351107 | ||
![]() |
0c14640352 | ||
![]() |
cfa30f9876 | ||
![]() |
af60dd3634 | ||
![]() |
ccabce1b34 | ||
![]() |
9915a18810 | ||
![]() |
a78373f324 | ||
![]() |
1d7476a725 | ||
![]() |
e8e78ebfdd | ||
![]() |
b77b0a3d81 | ||
![]() |
95b260f3a9 | ||
![]() |
97a9726845 | ||
![]() |
020aea033c | ||
![]() |
0ac46316af | ||
![]() |
94d47dc25e | ||
![]() |
debf08cac0 | ||
![]() |
ce1393d2d4 | ||
![]() |
fac482c442 | ||
![]() |
ee35540b6e | ||
![]() |
f77507e825 | ||
![]() |
0021efd593 | ||
![]() |
0d955bb873 | ||
![]() |
7fa2e8d2d3 | ||
![]() |
713d94d881 | ||
![]() |
4ecf8964b8 | ||
![]() |
11d044fa6e | ||
![]() |
a2104c5404 | ||
![]() |
1abed05413 | ||
![]() |
1465895ff7 | ||
![]() |
452025e984 | ||
![]() |
d537dd93d5 | ||
![]() |
650a1e807c | ||
![]() |
67f8a33cad | ||
![]() |
ff4f096f1d | ||
![]() |
b5cb353ab5 | ||
![]() |
17a38dfbed | ||
![]() |
f773683601 | ||
![]() |
abeaf828a3 | ||
![]() |
23a8a4201a | ||
![]() |
2d409e5c09 | ||
![]() |
2d57904bf4 | ||
![]() |
8fa83e1be7 | ||
![]() |
8875e73765 | ||
![]() |
65766fcaac | ||
![]() |
4cd4010a70 | ||
![]() |
d21da5643b | ||
![]() |
ba700e6387 | ||
![]() |
bd90fd7033 | ||
![]() |
fb3d352d3a | ||
![]() |
690852e157 | ||
![]() |
aa84d21bcf | ||
![]() |
4d62977c7b | ||
![]() |
cbac2e7bbb | ||
![]() |
88ee4c5b30 | ||
![]() |
12c46c5d8b | ||
![]() |
ab7d4e0e60 | ||
![]() |
708c6162c4 | ||
![]() |
7834bba6f7 | ||
![]() |
857c8aaaa2 | ||
![]() |
1253e6c64e | ||
![]() |
b610b2ecc7 | ||
![]() |
11addbe9c8 | ||
![]() |
709ef05714 | ||
![]() |
c51767eef1 | ||
![]() |
5aab9e878f | ||
![]() |
e7751e170e | ||
![]() |
776d345bc3 | ||
![]() |
a8fc30a13f | ||
![]() |
2d57b1b470 | ||
![]() |
90f21fa5db | ||
![]() |
6638d0e507 | ||
![]() |
c6793d477a | ||
![]() |
11e01ec074 | ||
![]() |
1d827caaaf | ||
![]() |
ba4db78ed9 | ||
![]() |
a321f4c842 | ||
![]() |
b1c465eab0 | ||
![]() |
5134b05af9 | ||
![]() |
dc3a93be99 | ||
![]() |
49aabfec02 | ||
![]() |
11d0d207fd | ||
![]() |
eed3245b1b | ||
![]() |
a7bbde1699 | ||
![]() |
bacccafe3c | ||
![]() |
3a80bd47cc | ||
![]() |
152917d5e1 | ||
![]() |
c588e173f8 | ||
![]() |
c0d2ead351 | ||
![]() |
6ffe5f8343 | ||
![]() |
2a823ef3e4 | ||
![]() |
5159c3f3ca | ||
![]() |
d092924961 | ||
![]() |
e14132b826 | ||
![]() |
df36ff638e | ||
![]() |
ad1fee8233 | ||
![]() |
3883d511a9 | ||
![]() |
10803b0d25 | ||
![]() |
a570a57863 | ||
![]() |
a7590f9717 | ||
![]() |
35224ca8d4 | ||
![]() |
40563e4f84 | ||
![]() |
c30901e9be | ||
![]() |
4fc0a91b31 | ||
![]() |
576417648a | ||
![]() |
0aace5230f | ||
![]() |
8d5ba7a6d7 | ||
![]() |
f8153b84de | ||
![]() |
fac5b0c9e7 | ||
![]() |
eb06413188 | ||
![]() |
066c870271 | ||
![]() |
1a92fa788d | ||
![]() |
3a0ab1cc0c | ||
![]() |
8a7d588bb0 | ||
![]() |
4943d79d68 | ||
![]() |
5de10c34b7 | ||
![]() |
2fbe4c2388 | ||
![]() |
767cb27f78 | ||
![]() |
b8c75c3fc0 | ||
![]() |
edeadf62ef | ||
![]() |
5ac80057c4 | ||
![]() |
210e30556e | ||
![]() |
0487b4213f | ||
![]() |
8f29c14ac4 | ||
![]() |
9543d8be10 | ||
![]() |
43e0003e79 | ||
![]() |
30e63a7244 | ||
![]() |
575f520461 | ||
![]() |
df618c9e91 | ||
![]() |
ebd13a4bae | ||
![]() |
7aa54b5a23 | ||
![]() |
b20cb36f5d | ||
![]() |
86f8c1863e | ||
![]() |
19d85c8566 | ||
![]() |
4241f91a0a | ||
![]() |
05624f099a | ||
![]() |
920f4099b6 | ||
![]() |
aa26750e01 | ||
![]() |
bdb3be7084 | ||
![]() |
14987f2b21 | ||
![]() |
47af6a0bbf | ||
![]() |
1487578ff4 | ||
![]() |
5a03a5d578 | ||
![]() |
2dd137329d | ||
![]() |
db37deb589 | ||
![]() |
ec7a3c516d | ||
![]() |
988d2ffab6 | ||
![]() |
5e2c66e241 | ||
![]() |
0ccfb0d781 | ||
![]() |
01ce961c00 | ||
![]() |
7579b691df | ||
![]() |
2a14deab0c | ||
![]() |
1acefb9eac | ||
![]() |
fb45b8f45c | ||
![]() |
d59a9c2e8a | ||
![]() |
a1c3d8723d | ||
![]() |
c4bd65e97c | ||
![]() |
eac3a2d7ac | ||
![]() |
55bb584778 | ||
![]() |
4584943531 | ||
![]() |
55d2bc0e0b | ||
![]() |
c0cc2fa1b8 | ||
![]() |
c1ecbd4de1 | ||
![]() |
0fb6b8a8ff | ||
![]() |
78ba9adfed | ||
![]() |
3f642ea34f | ||
![]() |
1a3927b40c | ||
![]() |
b09d73ab68 | ||
![]() |
9311addca3 | ||
![]() |
3c76478510 | ||
![]() |
545551e2bc | ||
![]() |
d5e0a95ff1 | ||
![]() |
e811109566 | ||
![]() |
0f805bfdfb | ||
![]() |
200cd629df | ||
![]() |
e8a29c1e82 | ||
![]() |
8589e4f3d3 | ||
![]() |
948e54772d | ||
![]() |
2d4b05a71b | ||
![]() |
a6433e84f5 | ||
![]() |
083854e2de | ||
![]() |
3508c4aa87 | ||
![]() |
d04b15ee25 | ||
![]() |
d6143e4c73 | ||
![]() |
d8ffc3c187 | ||
![]() |
2af788956e | ||
![]() |
d399141d13 | ||
![]() |
f6f899f103 | ||
![]() |
5b8919a246 | ||
![]() |
fe1989979c | ||
![]() |
0895fa9331 | ||
![]() |
b90fe0c52a | ||
![]() |
ab0e22159c | ||
![]() |
6ac0afbce0 | ||
![]() |
9532527e52 | ||
![]() |
defdf9f34c | ||
![]() |
a7dce2dc4e | ||
![]() |
ea8c51f8f3 | ||
![]() |
1e66878447 | ||
![]() |
6cfbdebf6a | ||
![]() |
a4469dcc14 | ||
![]() |
ac3eac7154 | ||
![]() |
65ac9065fa | ||
![]() |
5143e6763b | ||
![]() |
5660a8e9f5 | ||
![]() |
bc2b17df0b | ||
![]() |
f9e7c95348 | ||
![]() |
c6afec4759 | ||
![]() |
eb13498fff | ||
![]() |
163057f521 | ||
![]() |
d8ff1f9873 | ||
![]() |
97b7760de8 | ||
![]() |
acca0f6946 | ||
![]() |
f3f6d67d46 | ||
![]() |
63773d5226 | ||
![]() |
4e4559fc8c | ||
![]() |
44d540d36c | ||
![]() |
c6253a6515 | ||
![]() |
65a5ec2ef3 | ||
![]() |
70e8b35944 | ||
![]() |
ddba25a674 | ||
![]() |
14e6cb6a8f | ||
![]() |
d4619150f3 | ||
![]() |
5c1a1a2dd5 | ||
![]() |
7cfa690aaf | ||
![]() |
8d663ff055 | ||
![]() |
0b86343dd0 | ||
![]() |
e127898312 | ||
![]() |
51f83f25e6 | ||
![]() |
8f3da9f68a | ||
![]() |
4c1998f137 | ||
![]() |
84dc1c1b85 | ||
![]() |
326110e38d | ||
![]() |
f63b81c52a | ||
![]() |
bd2e221da3 | ||
![]() |
1fe673703f | ||
![]() |
c10467d22e | ||
![]() |
e21ec0a271 | ||
![]() |
3a1e492afc | ||
![]() |
e83c24c91b | ||
![]() |
81183c71c1 | ||
![]() |
979298ce57 | ||
![]() |
66e727e1b2 | ||
![]() |
35b1dda3a3 | ||
![]() |
6925779f59 | ||
![]() |
125d7daf4a | ||
![]() |
57c5ea4bd5 | ||
![]() |
e75fbdb136 | ||
![]() |
cb1020b26d | ||
![]() |
e1945506f3 | ||
![]() |
8d402971a8 | ||
![]() |
7e0087304b | ||
![]() |
20b02e738c | ||
![]() |
d042dba4d6 | ||
![]() |
a69ce37546 | ||
![]() |
3a798112f2 | ||
![]() |
3e09b4a725 | ||
![]() |
c5dd3e5542 | ||
![]() |
2fa9cbfd9e | ||
![]() |
c2c0de1696 | ||
![]() |
cc46d2ebb4 | ||
![]() |
d0510d8ea2 | ||
![]() |
7b0ba87b24 | ||
![]() |
67682a2683 | ||
![]() |
b1776b5ae5 | ||
![]() |
7a6968cb46 | ||
![]() |
23af4ee93e | ||
![]() |
0317562605 | ||
![]() |
1861e0b2cc | ||
![]() |
e5974809e8 | ||
![]() |
abfae17b9a | ||
![]() |
84b1a62ad2 | ||
![]() |
b6bcaec9bc | ||
![]() |
f19ed84cc4 | ||
![]() |
6c5a946fda | ||
![]() |
d58c9a57c6 | ||
![]() |
c6ffc9427e | ||
![]() |
0f1e64f3b2 | ||
![]() |
1ce5ad3003 | ||
![]() |
64694955c0 | ||
![]() |
97a90d8122 | ||
![]() |
3cd2c08277 | ||
![]() |
d804a1f146 | ||
![]() |
01581dc61c | ||
![]() |
9cc70a3fb6 | ||
![]() |
c37a2ca1c8 | ||
![]() |
80b38210b2 | ||
![]() |
e5dffb0097 | ||
![]() |
7396f5709e | ||
![]() |
41cf9134a6 | ||
![]() |
e960269653 | ||
![]() |
5e581b409c | ||
![]() |
f03d39eefb | ||
![]() |
deaa897928 | ||
![]() |
3f9758e706 | ||
![]() |
91baf552cf | ||
![]() |
16466cf7d6 | ||
![]() |
3c25c265df | ||
![]() |
a8529bd8d1 | ||
![]() |
f3e6913d57 | ||
![]() |
2c8df7d12e | ||
![]() |
dafdecb4e8 | ||
![]() |
ba03ca76c4 | ||
![]() |
c5874e0da5 | ||
![]() |
422cd1fbbf | ||
![]() |
8a9e2877da | ||
![]() |
71fd54ec9e | ||
![]() |
ff84b35e5d | ||
![]() |
ae32ac86b4 | ||
![]() |
bca3eaf709 | ||
![]() |
a03343827e | ||
![]() |
0f64202a29 | ||
![]() |
4fb7c642d5 | ||
![]() |
6b36e64e00 | ||
![]() |
84059f1faa | ||
![]() |
15376957f7 | ||
![]() |
da934be354 | ||
![]() |
3eee6b4218 | ||
![]() |
ff9400abde | ||
![]() |
e985bf0e7a | ||
![]() |
245908909b | ||
![]() |
2f63d321d1 | ||
![]() |
2222cb8fbf | ||
![]() |
897814a153 | ||
![]() |
8b7b41df41 | ||
![]() |
8f9a174f0a | ||
![]() |
df90187e06 | ||
![]() |
c9e0613b53 | ||
![]() |
a576f7a1ea | ||
![]() |
239b39cf52 | ||
![]() |
1f90529365 | ||
![]() |
acfc498344 | ||
![]() |
a1ac1f4b2e | ||
![]() |
8a892d47e5 | ||
![]() |
d91d503eb2 | ||
![]() |
e84bf7144c | ||
![]() |
73abacc20b | ||
![]() |
aea24279ba | ||
![]() |
5c5968e742 | ||
![]() |
3813ed9c2e | ||
![]() |
ec2c197e1f | ||
![]() |
0060c8ddb9 | ||
![]() |
f9c11c2dbf | ||
![]() |
65565a96b7 | ||
![]() |
b62ee94b89 | ||
![]() |
594897e9a5 | ||
![]() |
83f8bfd2ca | ||
![]() |
40e9f6fa2c | ||
![]() |
35afd2a8fb | ||
![]() |
a454ad5c41 | ||
![]() |
d9be1d7e32 | ||
![]() |
b625ec30d9 | ||
![]() |
4be8e155d1 | ||
![]() |
6726fcd25d | ||
![]() |
cd048be932 | ||
![]() |
5d477c4b4e | ||
![]() |
9244f0f113 | ||
![]() |
bc9a2cc92a | ||
![]() |
309a07bf4c | ||
![]() |
a0f06cab43 | ||
![]() |
1d65e2e50c | ||
![]() |
c60d4c2bc4 | ||
![]() |
f0d22e18c4 | ||
![]() |
9d36e8d853 | ||
![]() |
f5313268d7 | ||
![]() |
2c17ef4803 | ||
![]() |
32251dcf4e | ||
![]() |
94f64797de | ||
![]() |
d69546902b | ||
![]() |
72149a054e | ||
![]() |
3aff9726eb | ||
![]() |
0b8a57bcba | ||
![]() |
455486db7c | ||
![]() |
43511c316e | ||
![]() |
34e4b594cd | ||
![]() |
6314ee8780 | ||
![]() |
a4cd66f599 | ||
![]() |
729fb2e0b4 | ||
![]() |
dc2d8acc92 | ||
![]() |
f7c595ff18 | ||
![]() |
3d81a1e5ec | ||
![]() |
00d955eb40 | ||
![]() |
fd27647440 | ||
![]() |
27fb5fbbca | ||
![]() |
d810315884 | ||
![]() |
820970328b | ||
![]() |
3e2fcf4acd | ||
![]() |
07dedee37b | ||
![]() |
a13dec34ef | ||
![]() |
75f3127ba5 | ||
![]() |
072ec184d3 | ||
![]() |
321b40a386 | ||
![]() |
0a863b8c2b | ||
![]() |
b13fae2556 | ||
![]() |
c012105b90 | ||
![]() |
f26d503694 | ||
![]() |
6e4cd65544 | ||
![]() |
08c5095ad7 | ||
![]() |
dfb0e4f57b | ||
![]() |
29257f107a | ||
![]() |
ecde490967 | ||
![]() |
51a6467968 | ||
![]() |
9127993d84 | ||
![]() |
ec2370b76d | ||
![]() |
204431812b | ||
![]() |
627b4484ec | ||
![]() |
442991a712 | ||
![]() |
7eae5d4eab | ||
![]() |
f3914c86b9 | ||
![]() |
fafb752827 | ||
![]() |
2e9838699b | ||
![]() |
2ed1bf05d1 | ||
![]() |
ba9c3f41c9 | ||
![]() |
e35fae8f32 | ||
![]() |
b0d5f3bd64 | ||
![]() |
ed640bb181 | ||
![]() |
aff4cf1103 | ||
![]() |
9883f6e679 | ||
![]() |
ea91834407 | ||
![]() |
90c35f8181 | ||
![]() |
2a8c160569 | ||
![]() |
1d5117a607 | ||
![]() |
99d0f41d98 | ||
![]() |
7b522c0de8 | ||
![]() |
cbf4be04fc | ||
![]() |
f55509aadd | ||
![]() |
7e369d63b3 | ||
![]() |
6cf71a06c0 | ||
![]() |
a3511ba9e2 | ||
![]() |
49400c08cd | ||
![]() |
1624b87b9b | ||
![]() |
dcf387c91a | ||
![]() |
4c9c903648 | ||
![]() |
d12aaddc34 | ||
![]() |
cb01977029 | ||
![]() |
7a7632fa98 | ||
![]() |
76a3f9d402 | ||
![]() |
96dfeea412 | ||
![]() |
a4746d75e6 | ||
![]() |
52638b9d8e | ||
![]() |
514d00698d | ||
![]() |
c4a4de0056 | ||
![]() |
28a4be2536 | ||
![]() |
6e9803cd9f | ||
![]() |
63b1d6642c | ||
![]() |
28955bb449 | ||
![]() |
dcd7cae7cf | ||
![]() |
c954bb9456 | ||
![]() |
be0b298d81 | ||
![]() |
409026044b | ||
![]() |
0c311bdcf9 | ||
![]() |
626912a9a4 | ||
![]() |
058c884f1f | ||
![]() |
2e0cd7af5e | ||
![]() |
82706fd958 | ||
![]() |
e81775e63d | ||
![]() |
8ccb9e04eb | ||
![]() |
ae97ccba80 | ||
![]() |
8ab9ed5d4e | ||
![]() |
886ce72374 | ||
![]() |
a658c8b067 | ||
![]() |
209d7ef613 | ||
![]() |
ab1e8cbb50 | ||
![]() |
cbe6973b66 | ||
![]() |
a6c76a85ce | ||
![]() |
265f9e5433 | ||
![]() |
abb825b43e | ||
![]() |
f821407060 | ||
![]() |
381aca98d0 | ||
![]() |
b86d988b3c | ||
![]() |
a67de845f6 | ||
![]() |
808378129e | ||
![]() |
0d75012462 | ||
![]() |
c4148cec33 | ||
![]() |
32a0cdb2f9 | ||
![]() |
68823fd9b2 | ||
![]() |
d38b1abb49 | ||
![]() |
ebadd21c64 | ||
![]() |
f1616a15d0 | ||
![]() |
39bee4b9d2 | ||
![]() |
3f867e0167 | ||
![]() |
4300622c4a | ||
![]() |
9ad7381c11 | ||
![]() |
e5f287dad5 | ||
![]() |
aa57becc41 | ||
![]() |
a5fc9fcb79 | ||
![]() |
5134d0dee1 | ||
![]() |
7269c37c8f | ||
![]() |
9abe89a2dc | ||
![]() |
79aecf21bb | ||
![]() |
4253ff8e12 | ||
![]() |
fb7b820187 | ||
![]() |
3a2d775196 | ||
![]() |
c780fde38e | ||
![]() |
a47bb96536 | ||
![]() |
0e256a21a5 | ||
![]() |
3b864f8af5 | ||
![]() |
540fc4b76b | ||
![]() |
f78390b094 | ||
![]() |
0b635aafae | ||
![]() |
8ae90af01f | ||
![]() |
31f48c0cf0 | ||
![]() |
cd0ef08783 | ||
![]() |
4203fd2993 | ||
![]() |
54e56a47da | ||
![]() |
d8a28621cc | ||
![]() |
177bfe38f6 | ||
![]() |
b19b2e146a | ||
![]() |
3093d7e95a | ||
![]() |
4e0d8a0cbb | ||
![]() |
523151ddf0 | ||
![]() |
0a7cb94ea8 | ||
![]() |
d4b7c0e633 | ||
![]() |
3f76affbd2 | ||
![]() |
a8f8970601 | ||
![]() |
178b5ff626 | ||
![]() |
92d347f566 | ||
![]() |
cafd18bb2c | ||
![]() |
ce3e339201 | ||
![]() |
a863f0d955 | ||
![]() |
d7e84d4e11 | ||
![]() |
c47f7c2806 | ||
![]() |
cb4c9aa64f | ||
![]() |
15f4656d9a | ||
![]() |
cba863dc5f | ||
![]() |
ab6aa5463f | ||
![]() |
9e3af9b51f | ||
![]() |
143e566498 | ||
![]() |
000aaaf95d | ||
![]() |
42387bff6f | ||
![]() |
3fe6268f10 | ||
![]() |
f749f9ceef | ||
![]() |
c284a90663 | ||
![]() |
50442cf96b | ||
![]() |
4bfacf4a39 | ||
![]() |
3afd25691a | ||
![]() |
a6a963bec1 | ||
![]() |
d587a4b859 | ||
![]() |
8d5b142664 | ||
![]() |
e44664a3b5 | ||
![]() |
31599eb282 | ||
![]() |
d6ac4dc22a | ||
![]() |
1c978e7333 | ||
![]() |
0b3f45bb1b | ||
![]() |
24f2df926a | ||
![]() |
6c4a5fa38c | ||
![]() |
1726df6eaf | ||
![]() |
f00e8655ac | ||
![]() |
4312600248 | ||
![]() |
41395d9e00 | ||
![]() |
3e00bcbf9f | ||
![]() |
30af106563 | ||
![]() |
32c6966e4b | ||
![]() |
0b402b23f7 | ||
![]() |
3e9d7da4da | ||
![]() |
691fcaeee7 | ||
![]() |
58594ef2be | ||
![]() |
1c2a88373c | ||
![]() |
9f30910653 | ||
![]() |
d039176d75 | ||
![]() |
19a0eb1761 | ||
![]() |
41a6c2e501 | ||
![]() |
fbc7fc6645 | ||
![]() |
eea098d22d | ||
![]() |
573dbb431e | ||
![]() |
ecfe3a6533 | ||
![]() |
8216cbc4f6 | ||
![]() |
9a4d1d1375 | ||
![]() |
616e140420 | ||
![]() |
52ea2fd45d | ||
![]() |
050c1e268d | ||
![]() |
7b2cba7a6c | ||
![]() |
91ff5617ef | ||
![]() |
f1782868f9 | ||
![]() |
45ecea6330 | ||
![]() |
66ee22c3e6 | ||
![]() |
2db1222e45 | ||
![]() |
abbd057eb9 | ||
![]() |
6da5b8ccc5 | ||
![]() |
c5c202c04e | ||
![]() |
128e2b917d | ||
![]() |
2f4173b267 | ||
![]() |
6fe40f13a7 | ||
![]() |
3fea1e4df5 | ||
![]() |
13d2552274 | ||
![]() |
3d0bfbb4f4 | ||
![]() |
b893e88e8b | ||
![]() |
f2be9e4381 | ||
![]() |
53b5d6d167 | ||
![]() |
92bfe34716 | ||
![]() |
6e36d4ed48 | ||
![]() |
5df096baf3 | ||
![]() |
45cbaa2d13 | ||
![]() |
720a17acd7 | ||
![]() |
dab00ab036 | ||
![]() |
7ba37ce249 | ||
![]() |
b2da6d86f3 | ||
![]() |
56192d9e48 | ||
![]() |
00192b019c | ||
![]() |
21416f453a | ||
![]() |
ad16804344 |
37
.gitignore
vendored
37
.gitignore
vendored
@@ -13,17 +13,22 @@ config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
intltool-extract.in
|
||||
intltool-merge.in
|
||||
libtool
|
||||
ltmain.sh
|
||||
missing
|
||||
.deps
|
||||
src/metacity-wm.desktop
|
||||
src/mutter-wm.desktop
|
||||
src/mutter.desktop
|
||||
*.o
|
||||
*.a
|
||||
*.lo
|
||||
*.la
|
||||
.libs
|
||||
*.swp
|
||||
*.gir
|
||||
*.typelib
|
||||
tidy-enum-types.[ch]
|
||||
tidy-marshal.[ch]
|
||||
stamp-tidy-enum-types.h
|
||||
@@ -35,26 +40,34 @@ stamp-h1
|
||||
stamp-it
|
||||
.intltool-merge-cache
|
||||
POTFILES
|
||||
po/*.pot
|
||||
50-metacity-desktop-key.xml
|
||||
50-metacity-key.xml
|
||||
inlinepixbufs.h
|
||||
libmetacity-private.pc
|
||||
metacity
|
||||
metacity-dialog
|
||||
metacity-theme-viewer
|
||||
metacity.desktop
|
||||
metacity.schemas
|
||||
libmutter.pc
|
||||
mutter
|
||||
mutter-theme-viewer
|
||||
mutter.desktop
|
||||
mutter.schemas
|
||||
testasyncgetprop
|
||||
testboxes
|
||||
testgradient
|
||||
metacity-grayscale
|
||||
metacity-mag
|
||||
metacity-message
|
||||
metacity-window-demo
|
||||
mutter-grayscale
|
||||
mutter-mag
|
||||
mutter-message
|
||||
mutter-window-demo
|
||||
focus-window
|
||||
test-attached
|
||||
test-gravity
|
||||
test-resizing
|
||||
test-size-hints
|
||||
wm-tester
|
||||
# We can't say just "wm-tester" here or it will ignore the directory
|
||||
# rather than the binary
|
||||
src/wm-tester/wm-tester
|
||||
INSTALL
|
||||
mkinstalldirs
|
||||
src/mutter-enum-types.[ch]
|
||||
src/stamp-mutter-enum-types.h
|
||||
src/mutter-marshal.[ch]
|
||||
src/stamp-mutter-marshal.h
|
||||
src/mutter-plugins.pc
|
||||
|
21
ChangeLog
21
ChangeLog
@@ -1,3 +1,24 @@
|
||||
2009-03-16 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.26.0 release.
|
||||
|
||||
2009-02-04 Neil Jagdish Patel <njpatel@gmail.com>
|
||||
|
||||
* src/core/frame.c: queue resize on window undecorate
|
||||
|
||||
2009-02-03 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* src/include/all-keybindings.h: Fix description, focus the
|
||||
desktop, not desktop backgroung (Closes bug #569649)
|
||||
|
||||
2009-02-02 Matt Kraai <kraai@ftfbs.org>
|
||||
|
||||
* src/core/schema-bindings.c: Wrap g_error calls in braces.
|
||||
|
||||
2009-02-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.233.
|
||||
|
||||
2009-02-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.144 release.
|
||||
|
47
MAINTAINERS
47
MAINTAINERS
@@ -1,43 +1,8 @@
|
||||
Currently active maintainers
|
||||
--------------------------------
|
||||
Tomas Frydrych
|
||||
Email: tf linux intel com
|
||||
Userid: tomasf
|
||||
|
||||
Elijah Newren
|
||||
Email: newren gmail com
|
||||
Userid: newren
|
||||
Owen Taylor
|
||||
Email: otaylor redhat com
|
||||
Userid: otaylor
|
||||
|
||||
- Usually won't touch the theme bugs (isn't interested) or the
|
||||
compositor (until open source nvidia drivers are up to snuff).
|
||||
Tends to be most interested in libwnck/gtk interactions, focus
|
||||
issues, constraints problems, and raising/stacking, but works on
|
||||
just about anything other than themes and the compositor.
|
||||
|
||||
Thomas Thurman
|
||||
Email: thomas thurman org uk
|
||||
Userid: tthurman
|
||||
|
||||
- Responsible for all theme bugs and the compositor (thank goodness
|
||||
Thomas got involved, eh?). I'm sure he'll replace this sentence
|
||||
with his interests when he reads it. ;-)
|
||||
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
|
||||
Havoc Pennington
|
||||
Email: hp redhat com
|
||||
Userid: hp
|
||||
- Original author. Doesn't patch metacity anymore, but is active in
|
||||
answering questions, responding to bugs, providing very helpful
|
||||
suggestions and insight, and even assisting with debugging.
|
||||
|
||||
|
||||
Important historical figureheads
|
||||
--------------------------------
|
||||
|
||||
Rob Adams (readams readams net)
|
||||
- Was the main maintainer of metacity for a while; particular areas
|
||||
of focus included xinerama, placement, and an older version of the
|
||||
constraints code. Still responds to bugs every once in a while.
|
||||
|
||||
Søren Sandmann (sandmann redhat com)
|
||||
- Wrote most of the current compositing manager code + libcm
|
||||
|
43
METACITY_MAINTAINERS
Normal file
43
METACITY_MAINTAINERS
Normal file
@@ -0,0 +1,43 @@
|
||||
Currently active maintainers
|
||||
--------------------------------
|
||||
|
||||
Elijah Newren
|
||||
Email: newren gmail com
|
||||
Userid: newren
|
||||
|
||||
- Usually won't touch the theme bugs (isn't interested) or the
|
||||
compositor (until open source nvidia drivers are up to snuff).
|
||||
Tends to be most interested in libwnck/gtk interactions, focus
|
||||
issues, constraints problems, and raising/stacking, but works on
|
||||
just about anything other than themes and the compositor.
|
||||
|
||||
Thomas Thurman
|
||||
Email: thomas thurman org uk
|
||||
Userid: tthurman
|
||||
|
||||
- Responsible for all theme bugs and the compositor (thank goodness
|
||||
Thomas got involved, eh?). I'm sure he'll replace this sentence
|
||||
with his interests when he reads it. ;-)
|
||||
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
|
||||
Havoc Pennington
|
||||
Email: hp redhat com
|
||||
Userid: hp
|
||||
- Original author. Doesn't patch metacity anymore, but is active in
|
||||
answering questions, responding to bugs, providing very helpful
|
||||
suggestions and insight, and even assisting with debugging.
|
||||
|
||||
|
||||
Important historical figureheads
|
||||
--------------------------------
|
||||
|
||||
Rob Adams (readams readams net)
|
||||
- Was the main maintainer of metacity for a while; particular areas
|
||||
of focus included xinerama, placement, and an older version of the
|
||||
constraints code. Still responds to bugs every once in a while.
|
||||
|
||||
Søren Sandmann (sandmann redhat com)
|
||||
- Wrote most of the current compositing manager code + libcm
|
995
NEWS
995
NEWS
@@ -1,3 +1,998 @@
|
||||
3.2.2
|
||||
=====
|
||||
* Fix a crash that could occur when unredirected full-screen windows [Adel]
|
||||
* Fix a memory leak [Jasper; #642652]
|
||||
|
||||
Contributors:
|
||||
Jasper St. Pierre, Adel Gadllah
|
||||
|
||||
Translations
|
||||
Krishnababu Krothapalli [te], Nguyễn Thái Ngọc Duy [vi]
|
||||
|
||||
3.2.1
|
||||
=====
|
||||
* Allow keyboard window switching (alt-Tab) during drag-and-drop
|
||||
[Matthias, #660457]
|
||||
* Don't add invisible resize borders to fullscreen windows
|
||||
[Jasper, Owen; #659854]
|
||||
* Fix crash when toplevel windows were set to unexpected window types
|
||||
[Owen; #599988]
|
||||
* Correct problems with windows moving when restarting or switching
|
||||
window managers [Jasper; #660848]
|
||||
* Fix interaction of tiled windows with multiple monitors
|
||||
[Rui; #642580, #657519]
|
||||
* Make meta_display_unmanage_screen() public [Jasper; #660848]
|
||||
* Fix problem with turning off window decorations on the fly [Rui; #660773]
|
||||
* Fix spurious assertion failures with themes such as Nodoka [Sandro; #661286]
|
||||
* Misc bug fixes [Adel, Jasper, Rui; #660464, #660854, #662053]
|
||||
|
||||
Contributors:
|
||||
Matthias Clasen, Adel Gadllah, Sandro Mani, Rui Matos, Jasper St. Pierre, Owen Taylor
|
||||
|
||||
Translations:
|
||||
Tommi Vainikainen [fi], Miroslav Nikolić [sr, sr@latin], Muhammet Kara [tr]
|
||||
|
||||
3.2.0
|
||||
=====
|
||||
* Fix _NET_WM_FRAME_EXTENTS not to include invisible borders [Jasper; #659848]
|
||||
* Fix application-specified window placement (-geometry) for
|
||||
invisible borders [Jasper; #659848]
|
||||
|
||||
Contributors:
|
||||
Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Nilamdyuti Goswami [as], Carles Ferrando [ca@valencia], Petr Kovar [cz],
|
||||
Mario Blättermann [de], Inaki Larranaga [eu], Gabor Kelemen [hu],
|
||||
Takayoshi Okano [ja], Changwoo Ryu [ko], Djavan Fagundes [pt_BR]
|
||||
|
||||
3.1.92
|
||||
======
|
||||
* Fix bug with unredirecting full-screen windows on multi-monitor -
|
||||
notably affected gnome-screensaver [Adel; #657869]
|
||||
* Disable top resizing of attached dialogs [Jasper; #657795]
|
||||
* Code cleanup [Jasper, Rui]
|
||||
* Misc bug fixes [Adel, Florian, Jasper, Rui;
|
||||
#658069, #659266, #659523, #659477]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, Rui Matos, Florian Müllner, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Joan Duran [ca], Joe Hansen [dk], Jiro Matsuzawa [ja], Daniel Korostil [uk]
|
||||
|
||||
3.1.91.1
|
||||
========
|
||||
* Fix problem where certain application updates would get lost [#657071, Owen]
|
||||
* Fix a problem where after resuming from the screensaver, things got
|
||||
slow [#658228, Jasper, Adel]
|
||||
* When a monitor is plugged or unplugged, keep existing windows on their
|
||||
current monitor [#645408, Alex]
|
||||
* Remove 'Mutter' title from alerts such as
|
||||
"The widow '%s' is not responding" [Matthias]
|
||||
* Remove pointless warning:
|
||||
Received a _NET_WM_MOVERESIZE message for %s; these
|
||||
messages lack timestamps and therefore suck.
|
||||
[Rui]
|
||||
* Misc bug fixes [Jasper]
|
||||
* Build fixes [Javier]
|
||||
|
||||
Contributors:
|
||||
Matthias Clasen, Adel Gadllah, Javier Jardón, Alex Larsson, Rui Matos,
|
||||
Jasper St. Pierre, Owen Taylor
|
||||
|
||||
Translations:
|
||||
Ihar Hrachyshka [be], Bruce Cowan [en_FB], Daniel Mustieles [es],
|
||||
Claude Paroz [fr], Andika Triwidada [id], Luca Ferretti [it],
|
||||
Rudolfs Mazurs [lt], Piotr Drąg [pl], Duarte Loreto [pt],
|
||||
Matej Urbančič [sl], Tirumurti Vasudevan [ta], Chao-Hsiung Liao [zh_KH, TW]
|
||||
|
||||
3.1.90.1
|
||||
========
|
||||
* Fix crash when no windows are open [Adel; #657692]
|
||||
* Fix annotations for new strictness in gobject-introspection [Jasper, Owen]
|
||||
* Fix some errors with rounded frame drawing [Jasper; #657661]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, Jasper St. Pierre, Owen Taylor
|
||||
|
||||
3.1.90
|
||||
======
|
||||
* Extend the draggable portion of window borders outside the visible frame
|
||||
for easy resizing with thin borders. (New draggable_border_width GConf key
|
||||
controls the total width of visible and invisible borders.)
|
||||
[Jasper; #644930]
|
||||
* Draw rounded window corners with antialising [Jasper; #628195]
|
||||
* Unredirect override-redirect fullscreen windows, such as full-screen
|
||||
3D games to avoid any performance impact [Adel; #597014]
|
||||
* Add :resizable and :above properties to MetaWindow. [Tim; #653858]
|
||||
* Add MUTTER_DISABLE_FALLBACK_COLOR environment variable to allow visualizing
|
||||
places where a color is missing for gtk:custom() colors [Florian; #656112]
|
||||
* Don't attach modal dialogs to special windows like the desktop;
|
||||
add meta_window_is_attached_dialog() [Dan, #646761]
|
||||
* Make MetaBackgroundActor public, allow creating multiple instances
|
||||
(sharing a common texture), and add a :dim-factor property
|
||||
[Rui, Owen; #656433]
|
||||
* Fix attached dialogs to not be resizable from the top and to be
|
||||
position correctly [Jasper; #656619]
|
||||
* Misc bug fixes [Jasper, Rui; #656335, #657583]
|
||||
|
||||
Contributors:
|
||||
Tim Cuthbertson, Adel Gadllah, Rui Matos, Florian Müllner, Jasper St. Pierre,
|
||||
Owen Taylor, Dan Winship
|
||||
|
||||
Translations:
|
||||
Alexander Shopov [bg], Jorge González [es], Fran Dieguez [gl],
|
||||
Yaron Shahrabani [he], Takeshi Aihana [ja], Aurimas Černius [lt],
|
||||
Kjartan Maraas [nb], A S Alam [pa], Yuri Kozlov [ru], Daniel Nylander [se],
|
||||
Theppitak Karoonboonyanan [th], Abduxukur Abdurixit [ug], Aron Xu [zh_CN]
|
||||
|
||||
3.1.4
|
||||
=====
|
||||
* Use better, much more subtle shadow definitions [Jakub; #649374]
|
||||
* Add the ability to use named GTK+ colors in theme files as
|
||||
gtk:custom(name,fallback) [Florian; #648709]
|
||||
* Port from GdkColor to GdkRGBA and from GtkStyle to GtkStyleContext
|
||||
[Florian; #650586]
|
||||
* Try to fix window bindings using the Super key [Owen; #624869]
|
||||
* Update to using more modern Cogl and Clutter APIs
|
||||
[Adel, Emmanuele, Neil; #654551 #654729 #654730 #655064]
|
||||
* Fix for srcdir != builddir builds [Thierry; #624910]
|
||||
* Make handling of focus appearance for attached dialogs more robust
|
||||
[Dan; #647712]
|
||||
* Misc bug fixes
|
||||
[Dan, Florian, Jasper, Owen, Rui; #642957 #649374 #650661 #654489 #654539]
|
||||
|
||||
Contributors:
|
||||
Emmanuele Bassi, Adel Gadllah, Rui Matos, Florian Müllner, Neil Roberts,
|
||||
Jasper St. Pierre, Jakub Steiner, Owen Taylor
|
||||
|
||||
Translations:
|
||||
Ihar Hrachyshka [be], Jorge González, Daniel Mustieles [es],
|
||||
Fran Dieguez [gl], Yaron Shahrabani [he], Takeshi Aihana [ja],
|
||||
Kjartan Maraas [nb], Rudolfs Mazurs [lv], Matej Urbančič [sl],
|
||||
Abduxukur Abdurixit [ug], Nguyễn Thái Ngọc Duy [vi]
|
||||
|
||||
3.1.3.1
|
||||
=======
|
||||
* Back API version down to "3.0" - the change to Meta-3.1.gir
|
||||
was unintentional [Owen]
|
||||
|
||||
Translations:
|
||||
Yaron Shahrabani [he], Kjartan Maraas [nb], Muhammet Kara [tr]
|
||||
|
||||
3.1.3
|
||||
=====
|
||||
* Support dark window theme variants for windows with a dark
|
||||
widget theme; this is selected by the _GTK_THEME_VARIANT
|
||||
property [Florian, #645355]
|
||||
* Don't draw a shadow under windows with an alpha-channel - this
|
||||
fixes transparency for GNOME Terminal [Owen, Jasper; #635268]
|
||||
* Add a MetaWindow:wm-class property for notification [Jasper; #649315]
|
||||
* Add a MetaWindow:minimized property for notification [Florian]
|
||||
* Fix handing of unusual window shapes that Wine was setting
|
||||
causing some applications to draw wrong [Jasper; #627880]
|
||||
* Improve replacing another compositor and being replaced:
|
||||
release compositor selection in the right order and wait for
|
||||
compositors that get it wrong. [Colin, Owen; #653121]
|
||||
* Remove behavior where left clicking on a window border with
|
||||
the titlebar offscreen gave the window menu [Florian; #652369]
|
||||
* Don't set the global default textdomain, since Mutter is
|
||||
a library as well as an application [Dan; #649202]
|
||||
* Exit with the right (success or failure) exit status [Dan]
|
||||
* Code cleanup [Florian]
|
||||
* Miscellaneous bug fixes [Owen; #649114, #652507]
|
||||
|
||||
Contributors:
|
||||
Florian Müllner, Jasper St. Pierre, Owen Taylor, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Ihar Hrachyshka [be], Daniel Mustieles [es], Yaron Shahrabani [he],
|
||||
Carles Ferrando [ca@valencia], Takeshi Aihana [ja], Fran Diéguez [gl],
|
||||
Matej Urbančič [sl], Miroslav Nikolic [sr], Muhammet Kara [tr],
|
||||
Daniel Korostil [uk]
|
||||
|
||||
3.0.2.1
|
||||
=======
|
||||
* When saving the session, use the "program name" rather than
|
||||
harcoding mutter, fixing session saving for gnome-shell [Matthias]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648828
|
||||
|
||||
Contributors:
|
||||
Matthias Clasen
|
||||
|
||||
3.0.2
|
||||
=====
|
||||
|
||||
* Fix a crash when running without XKB support [Adam]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647777
|
||||
* Fix smallish memory leaks [Colin]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649500
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649504
|
||||
* Ignore mirrored monitors when listing monitors, fixing
|
||||
drag-and-drop problems in GNOME Shell [Owen]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=649299
|
||||
* Don't allow side-by-side tiling of non-maximizable windows
|
||||
like dialogs and utility windows [Dan]
|
||||
* Fix interaction of _NET_WM_WINDOW_OPACITY with window effects,
|
||||
making it work again with GNOME Shell
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=648613
|
||||
|
||||
Contributors:
|
||||
Adam Jackson, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Abduxukur Abdurixit [ug]
|
||||
|
||||
3.0.1
|
||||
=====
|
||||
|
||||
* If WM_CLIENT_MACHINE isn't set, don't assume a window is remote;
|
||||
fixes behavior of Fox toolkit applications under GNOME Shell.
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647662 [Colin]
|
||||
* Fix cases where windows could get stuck drawing as focused after
|
||||
an attached modal dialog was closed. [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=647613
|
||||
* Fix a bug where a window that is too big to be tiled side-by-side
|
||||
would behave strangely when using the gesture of dragging to
|
||||
the top to maximize. [Florian]
|
||||
|
||||
Contributors:
|
||||
Florian Müllner, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Amitakhya Phukan [as], Kristjan Schmidt [eo], Muhammet Kara [tr]
|
||||
|
||||
3.0.0
|
||||
=====
|
||||
|
||||
* Avoid crashing when you have a single window and try to move it between
|
||||
workspaces. [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=642957
|
||||
|
||||
Contributors:
|
||||
Dan Winship
|
||||
|
||||
Translations:
|
||||
Jordi Serratosa [ca], Petr Kovar [cz], Ask H. Larsen [da], Bruce Cowan [en_GB],
|
||||
Inaki Larranaga Murgoitio [eu], Gabor Kelemen [hu], Dirgita [id], Shankar Prasad [kn],
|
||||
Changwoo Ryu [ko], Wouter Bolsterlee [nl], Duarte Loreto [pt],
|
||||
Antonio Fernandes C. Neto, Rodrigo Padula de Oliveira [pt_BR], T. Vasudevan [ta],
|
||||
Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||
|
||||
2.91.93
|
||||
=======
|
||||
|
||||
* Fix bug where, when a monitor was hot-plugged, all workspaces
|
||||
would collapse to a single workspace. (There are still issues
|
||||
when a secondary monitor is hot-plugged to the left of the
|
||||
primary monitor.) [Alex]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=645408)
|
||||
|
||||
* Fix a crash for the cycle_group action [Jasper]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=645843
|
||||
|
||||
* Fix misdrawing of window shadows on some focus changes [Dan]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=636904
|
||||
|
||||
* Export meta_get_replace_current_wm() to allow fixing a
|
||||
GNOME Shell bug with --replace [Colin]
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=645590
|
||||
|
||||
Contributors:
|
||||
Alexander Larsson, Jasper St. Pierre, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Alexander Shopov [bg], Christian Kirbach [de], Yaron Shahrabani [he],
|
||||
Rudolfs Mazurs [lv], A S Alam [pa], Yuri Myasoedov [ru], Daniel Nylander [se],
|
||||
Abduxukur Abdurixit [ug], Daniel Korostil [uj], Aron Xu [zh_CN]
|
||||
|
||||
2.91.92
|
||||
=======
|
||||
|
||||
* Add a workspaces_only_on_primary preferences. When set, this makes
|
||||
workspaces switching only apply to windows on the primary monitor,
|
||||
while windows on other monitors are unaffected.
|
||||
* Export API for monitor handling [Alex]
|
||||
MetaScreen::monitors-changed signal
|
||||
meta_screen_get_primary_monitor()
|
||||
meta_window_is_on_primary_monitor()
|
||||
meta_window_get_monitor()
|
||||
MetaWindow::window-entered-monitor, <etaWindow::window-left-monitor
|
||||
meta_window_move_to_monitor() [Florian]
|
||||
* Behavior improvemnts for attached modal dialogs:
|
||||
- Allow dragging dragging on the titlebar to move the parent ["Ron"]
|
||||
- Allow resizing [Florian]
|
||||
- Constrain to be on the current monitor [Florian]
|
||||
* Don't turn on XSMP autorestart [Colin]
|
||||
* Combine libmutter-wm and libmutter-private into a single libmutter
|
||||
[Frédéric]
|
||||
* Export methods to move and resize windows [Jeffery]
|
||||
meta_window_move(), meta_window_resize(), meta_window_move_frame()
|
||||
* Add a MUTTER_WM_CLASS_FILTER environment variable to allow existing
|
||||
windows to be ignored when performance testing. [Owen]
|
||||
* Add a new compositor-based flash for visual bell [Dan]
|
||||
* Fix bug where application specified values for properties like
|
||||
"skip taskbar" were sometimes ignored [Dan]
|
||||
* Bug fixes [Dan, Florian, Giovanni, Jasper, Owen]
|
||||
* Build fixes [Rico]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Florian Müllner, Alexander Larsson, Jeffery Olson,
|
||||
Frédéric Péters, Owen Taylor, Jasper St. Pierre, Rico Tzschichholz,
|
||||
"Ron", Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Khaled Hosny [ar], David Planella [ca], Mario Blättermann [de],
|
||||
Bruce Cowan [en_GB], Jorge González, Daniel Mustieles [es], Ivar Smolin [et],
|
||||
Bruno Brouard [fr], Fran Diéguez [gl], Yaron Shahrabani [he],
|
||||
Gabor Kelemen [hu], Luca Ferretti [it], Kjartan Maraas [nb], Piotr Drąg [pl],
|
||||
Duarte Loreto [pt], Lucian Adrian Grijincu, Adi Roiban [ro],
|
||||
Yuri Myasoedov [ru], Matej Urbančič [sl], Daniel Korostil [uk]
|
||||
|
||||
Bugs fixed:
|
||||
624360 window shows up in when pressing alt+tab, but skip_taskbar_hint is set to True
|
||||
631308 Dialogs attached to parent sometimes extend out of the screen
|
||||
638674 [PATCH] Allow moving attached dialogs
|
||||
639765 a11y: visual alert only works per-window, not screen
|
||||
641975 Pre-_NET_WM_ICONs look corrupted
|
||||
642355 patch to expose MetaWindow.move(), .resize() and add/expose .move_frame() to javascript
|
||||
642787 MetaWindowActor has a dangling reference to its MetaWindow
|
||||
643597 Attached dialogs not resizable, even by app request
|
||||
644188 Broken build of 2.91.91
|
||||
644252 Add MUTTER_WM_CLASS_FILTER environment variable
|
||||
644529 session: Change XSMP restart style to Never
|
||||
644565 Kill libmutter-private ?
|
||||
644961 auto-tiling makes moving already-tiled windows hard
|
||||
645224 Translation message doesn't make much sense
|
||||
645247 Methods of Meta.Rectangle are missing annotations.
|
||||
645455 tiling: Fix dragging windows free from edge-tiling
|
||||
|
||||
2.91.91
|
||||
=======
|
||||
|
||||
* Build a libmutter-wm that contains all of the logic and that
|
||||
can be linked to to create custom executables. The mutter executable
|
||||
becomes a small stub linked to this library [Dan]
|
||||
* Move installed headers files into a meta/ subdirectory instead
|
||||
of polluting the toplevel namespace [Dan]
|
||||
* Remove various unused complications: [Dan]
|
||||
- Ability to set the set of plugins via GConf
|
||||
- Plugin 'params'
|
||||
- meta_restart() and "mutter-message restart"
|
||||
* Don't exit when we are requested to exit via XSMP, assume we'll be
|
||||
killed along with the X server; this avoids visual artifacts from
|
||||
unmanaging windows when logging out [Colin]
|
||||
* Build fixes [Dan, Jani, Jeff]
|
||||
|
||||
Contributors:
|
||||
Jani Monoses, Jeff Olson, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Bruno Brouard [fr], Kjartan Maraas [nb], Daniel Korostil [uk]
|
||||
|
||||
Bugs fixed:
|
||||
643194 patch: expose new meta_window_get_window_rect
|
||||
643437 Don't exit on XSMP request
|
||||
643959 Make mutter into a library
|
||||
|
||||
2.91.90
|
||||
=======
|
||||
|
||||
* Change <Alt>Above_Tab from being a cycle_group binding to
|
||||
a switch_group binding [Rui]
|
||||
* Make plugin-loading failure fatal [Colin]
|
||||
* Add 'position-changed' signal to MetaWindowActor [Owen]
|
||||
* When 'live_hidden_previews' is enabled, position hidden windows
|
||||
to allow the creation of workspace previews [Owen]
|
||||
* Fix bug with opacity of MetaBackgroundActor
|
||||
|
||||
Contributors:
|
||||
Rui Matos, Owen Taylor, Colin Walters
|
||||
|
||||
Translations:
|
||||
Jorge González [es], Mattias Põldaru [et], Sweta Kothari [gu], Luca Ferretti [it],
|
||||
Changwoo Ryu [ko], Nguyễn Thái Ngọc Duy [vi]
|
||||
|
||||
Bugs fixed:
|
||||
641309 When live_hidden_previews is set, force placement for hidden windows
|
||||
641310 MetaWindowActor: Add a 'positioned-changed' signal
|
||||
641979 Visual glitch on workspace selector closing overview mode
|
||||
641384 Make plugin loading failure fatal
|
||||
642426 Don't pass handled key events to GTK+
|
||||
|
||||
2.91.6
|
||||
======
|
||||
|
||||
* Add meta_screen_override_window_layout() to let a plugin set the workspace
|
||||
layout [Owen]
|
||||
* Add a 'size-changed' signal to MetaWindowActor [Florian]
|
||||
* Add meta_window_actor_is_destroyed() [Adel]
|
||||
* Fix problems with window tile previews when cancelling a move [Florian]
|
||||
* Port theme elements that use GTK+ drawing to use GtkStyleContext instead
|
||||
of the deprecated GtkStyle. [Florian]
|
||||
* Fix compiler warnings that were causing compilation failures [Jasper, Owen]
|
||||
* Misc bug fixes [Gabor, Jasper, Owen, Rui]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, Gabor Kelemen, Rui Matos, Florian Müllner, Jasper St. Pierre,
|
||||
Owen Taylor
|
||||
|
||||
Translations:
|
||||
Khaled Hosny [ar], Alexander Shopov [bg], Petr Kovar [cz], Fran Diéguez [gl],
|
||||
Marios Zindilis [gr], Gabor Kelemen [hu], Kjartan Maraas [nb], A S Alam [pa],
|
||||
Daniel Nylander [se], Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||
|
||||
2.91.5
|
||||
======
|
||||
|
||||
* Add a Above_Tab key symbol that can be used in key bindings to mean
|
||||
the key above the Tab key. This is now the default binding for
|
||||
cycle_group in both Mutter and Metacity. [Owen]
|
||||
* Add new frame states for tiled-on-the-left and tiled-on-the-right [Florian]
|
||||
* Add new background drawing functions that can be defined in a theme
|
||||
for single buttons. [Florian]
|
||||
* Draw the right button backgrounds for all custom button layouts [Florian]
|
||||
* Remove vestigal --composite/--no-composite command line options [Nickolas]
|
||||
* Fix building on GLES [Andreas]
|
||||
* Code cleanups [Adel, Owen]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, Nickolas Lloyd, Andreas Mueller, Florian Müllner, Owen Taylor
|
||||
|
||||
Translations:
|
||||
Mattias Põldaru, Ivar Smolin [et], Gheyret T. Kenji [ug]
|
||||
|
||||
Bugs fixed:
|
||||
613124 Invalid visibility-related asserts in MutterWindow
|
||||
626875 Fix handling of --composite and --no-composite command line options
|
||||
629282 [PATCH] Fix errors building for gles-systems (clutter-eglx)
|
||||
635569 Add an "Above_Tab" pseudo-keysym
|
||||
635683 add specific button background for single button (per side) case
|
||||
635686 button backgrounds broken with rtl locales
|
||||
637330 [PATCH] theme: Add tiled_left/tiled_right frame states
|
||||
|
||||
2.91.4
|
||||
======
|
||||
|
||||
* Update for GTK+ 3 changes [Benjamin, Colin, Emmanuele, Florian]
|
||||
* Support maximizing a window by dragging to the top of the screen
|
||||
in the same way you can tile by dragging to the edge of the screen.
|
||||
[Ray, Florian]
|
||||
* Misc bug fixes [Milan, Owen]
|
||||
|
||||
Contributors:
|
||||
Emmanuele Bassi, Milan Bouchet-Valat, Florian Müllner, Benjamin Otte,
|
||||
Ray Strode, Owen Taylor, Colin Walters
|
||||
|
||||
Translations:
|
||||
Matej Urbančič [sl], Nguyễn Thái Ngọc Duy [vi]
|
||||
|
||||
Bugs fixed:
|
||||
630548 gnome-shell could auto-maximize windows when dragged to top edge of screen
|
||||
636083 workspace: Consider text direction when switching
|
||||
636301 Port testgradient example to GTK3
|
||||
636302 Replace some GDK X11 calls with future-proof ones
|
||||
636491 valgrind: meta_window_shape_new (meta-window-shape.c:79)
|
||||
637802 ui: Adapt to GDK API changes
|
||||
|
||||
2.91.3
|
||||
======
|
||||
|
||||
* Better shadows: [Owen]
|
||||
- Shadows can be different for different window types and focus states
|
||||
- Shadows are larger by default, especially for the currently active
|
||||
window
|
||||
- Shadows for attached modal dialogs and menus are drawn not to
|
||||
overlap the attachment point.
|
||||
- Shadows follow the shape of shaped windows
|
||||
* Optimization: [Owen]
|
||||
- Avoid repainting in situations when windows are potentially restacked
|
||||
but aren't actually restacked.
|
||||
- Pay attention to partial stage repaints in obscured window calculations
|
||||
- Better optimization of painting obscured shadows; turn off shadows
|
||||
for maximized windows.
|
||||
- Move background repainting into Mutter; doing it here rather than
|
||||
in plugins allows not painting obscured parts of the background.
|
||||
* A new frame type 'attached' is added for attached modal dialogs
|
||||
and can be referenced in theme files with a theme version of 3.2.
|
||||
* Fix updating key bindings when the keyboard layout changes
|
||||
[Derek, Owen, Thomas]
|
||||
* Bug fixes [Adel, Florian]
|
||||
* Build fixes [Dan Williams, Diego, Javier, Owen]
|
||||
|
||||
Contributors:
|
||||
Adel Gadllah, Javier Jardón, Florian Müllner, Derek Poon, Owen Taylor,
|
||||
Thomas Thurman, Diego Escalante Urrelo, Dan Williams
|
||||
|
||||
Translations:
|
||||
Khaled Hosny [ar], Jorge González [es], Fran Diéguez [gl],
|
||||
Yaron Shahrabani [he], Kjartan Maraas [nb], Gheyret T. Kenji [ug]
|
||||
|
||||
Bugs fixed:
|
||||
634779 MetaWindowGroup: further optimize paints by using current scissor
|
||||
634833 Draw the root window background
|
||||
592382 improve shadow effect
|
||||
628199 Add antialising to arc and line drawing operations
|
||||
633002 meta-actor-window: Use G_UNLIKELY for TFP check
|
||||
634771 MetaStackTracker: Avoid queueing resync for obvious no-ops
|
||||
635421 Fix crash in check_needs_shadow
|
||||
635493 configure.in: it's git, not Subversion
|
||||
635528 configure.ac: move call to AM_GNU_GLIB_GETTEXT above cflags modification
|
||||
635575 meta-window-actor: remove unused meta_window_actor_get_shadow_bounds
|
||||
636083 workspace: Consider text direction when switching
|
||||
|
||||
2.91.2
|
||||
======
|
||||
|
||||
* Remove support for GTK+ 2 [Florian]
|
||||
* Adapt to deprecation of size_request deprecation in GTK+ [Matthias]
|
||||
* Include change from Metacity to fix confusion of mouse
|
||||
tracking when double-clicking on title bar [Owen]
|
||||
* Fix bug with the the window menu getting stuck when you alt-Tab [Owen]
|
||||
|
||||
Contributors:
|
||||
Matthias Clasen, Florian Müllner, Owen Taylor
|
||||
|
||||
Translations:
|
||||
Petr Kovar [cz]
|
||||
|
||||
Bugs fixed:
|
||||
633133 Remove compatibility for GTK+-2.0
|
||||
633352 prepare for the demise of size_request
|
||||
633398 Fix check for events on UI widgets
|
||||
633401 Fix warning from synthesized events with GdkDevice
|
||||
|
||||
2.91.1
|
||||
======
|
||||
|
||||
* Default build is now GTK+ 3 build
|
||||
* Mutter namespace prefix is removed, in favor of consistent
|
||||
meta_ namespace prefixing [Owen]. Naming changes:
|
||||
MutterWindow => MetaWindowActor
|
||||
mutter_get_windows => meta_get_window_actors
|
||||
mutter_plugin_get_windows => meta_plugin_get_window_actors
|
||||
* Add missing values in MetaKeyBindingAction - this fixes a problem where
|
||||
key binding lookup wasn't working properly for some key bindings. [Dan]
|
||||
* Remove keysym parameter to meta_display_get_keybinding_action() - the
|
||||
function expected the default keysym for the keycode to always be passed [Dan]
|
||||
* Clean up installed header files - in particular, theme-parser.h is merged
|
||||
into a new public-only theme.h and private internals are moved to
|
||||
theme-private.h.
|
||||
* Fix problems with antialiased rendering of themes [Brandon, Owen, Nickolas]
|
||||
* Fix problem with parsing color constants in themes [Jon, Owen]
|
||||
* Build fixes [Colin]
|
||||
* Miscellaneous bug fixes [Giovanni, Rico]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Nickolas Lloyd, William Jon McCann, Owen Taylor,
|
||||
Rico Tzschichholz, Colin Walters, Dan Winship, Brandon Wright
|
||||
|
||||
Translations:
|
||||
Fran Diéguez [gl], Yinghua Wang [zh_CN]
|
||||
|
||||
Fixed bugs:
|
||||
628401 tint and line draw ops rendering issues
|
||||
628520 unfortunate namespacing
|
||||
631487 Fix drawing of <arc> theme elements
|
||||
632116 don't clobber gerrors
|
||||
632149 Fill in missing MetaKeyBindingAction values
|
||||
632155 meta_display_get_keybinding_action: remove keysym parameter
|
||||
632474 Remove MetaRegion
|
||||
632494 introspection: remove --allow-unprefixed
|
||||
|
||||
2.91.0
|
||||
======
|
||||
|
||||
* Enable side-by-side tiling via a gesture of dragging to the left or right
|
||||
edge of the screen. (enabled with an off-by-default GConf key) [Florian]
|
||||
* Allow breaking out of maximization/tiling using a alt-middle-button window
|
||||
resize [Owen, Florian]
|
||||
* Add the ability to have modal dialogs attached to their parent window
|
||||
(enabled with an off-by-default GConf key) [Maxim]
|
||||
* Draw with Cairo rather than GDK [Florian, Benjamin]
|
||||
* Add compatibility for changes in GTK+ 3
|
||||
[Benjamin, Alban, Florian, Jasper, Matthias, Owen, Thierry]
|
||||
- libmutter-private is now only installed for GTK+ 3 builds
|
||||
- Theme parts of libmutter-private API are changed to take cairo_t
|
||||
rather than GdkDrawable
|
||||
* Update introspection build and annotations for new behavior of
|
||||
g-ir-scanner [Colin]
|
||||
* Fix bug that caused window menu options not to work [Owen]
|
||||
* Fix misbehavior of Wine windows [Owen, Alban]
|
||||
* Fix crashes from missing error traps [Adel]
|
||||
* Build fixes [Colin, Florian, Owen, Rob, Tomas]
|
||||
* Misc bug fixes [Adel, Jon, Owen, Nickolas, Tomas]
|
||||
* Cleanups [Adel, Benjamin, Florian]
|
||||
|
||||
Contributors:
|
||||
Alban Browaeys, Matthias Clasen, Maxim Ermilov, Tomas Frydrych, Adel Gadllah,
|
||||
Nickolas Lloyd, William Jon McCann, Florian Muellner, Benjamin Otte,
|
||||
Thierry Reding, Rob Staudinger, Jasper St. Pierre, Owen Taylor, Colin Walters
|
||||
|
||||
Translations:
|
||||
Alexander Shopov [bg], Mario Blättermann [de], Ask H. Larsen [dk],
|
||||
Michael Kotsarinis [el], Philip Withnall [en_UK], Jorge González [es],
|
||||
Fran Diéguez [gl], Bruno Brouard, Claude Paroz [fr], Yaron Shahrabani [he],
|
||||
Gabor Kelemen [hu], Luca Ferretti [it], Nils-Christoph Fiedler [nds],
|
||||
Kjartan Maraas [nb], A S Alam [pa], Piotr Drąg [pl], Duarte Loreto [pt],
|
||||
Antonio Fernandes C. Neto [pt_BR], Matej Urbančič [sl],
|
||||
Miloš Popović [sr, sr@latin], Tirumurti Vasudevan [ta], Aron Xu [zh_CN],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||
|
||||
Fixed Bugs:
|
||||
597763 With >2 workspaces, Window menu "Move to Another Workspace" menu doesn't work
|
||||
598603 displays window size when moving terminal window
|
||||
606158 "Always on top" triggers Window manager warning:
|
||||
Log level 8: meta_window_set_user_time: assertion `!window->override_redirect' failed
|
||||
610575 make meta_screen_set_cursor public
|
||||
613126 Do not cancel Alt+Tab grab due to Shift key events
|
||||
623235 BadDamage error from XSubtractDamage
|
||||
624757 Check for TFP usage after actually setting the pixmap
|
||||
625712 [mutter-shaped-texture] Remove material_workaround
|
||||
626583 Replace Gdk drawing API with cairo
|
||||
627087 Mipmap emulation not working
|
||||
627210 Crash with X error
|
||||
628544 introspection: Build with --warn-fatal, drop fix-meta-rectangle.py hack
|
||||
629127 build problem with recent gtk3
|
||||
629232 Multiple syntax errors in file mutter-message.c when building Mutter for
|
||||
GNOME Shell dependencies
|
||||
629350 [mutter-shaped-texture] Use a base material for all instances
|
||||
629931 Allow breaking out from maximization/tiling during a mouse resize
|
||||
630195 Use GDK error trapping straight-up
|
||||
630203 Prepare mutter code for GTK3 rendering-cleanup
|
||||
630671 prepare mutter for the demise of GtkObject
|
||||
630843 gtk_window_set_visual was replaced by gtk_widget_set_visua
|
||||
631147 Adapt to GTK API changes
|
||||
631175 Mutter error compiling Gnome Shell
|
||||
|
||||
2.31.5
|
||||
======
|
||||
|
||||
* Support building with GTK+ 3.0 [Florian]
|
||||
* Remove deprecated usages for compatibility with GTK+ 3.0
|
||||
[Claudio, Florian, Nickolas]
|
||||
* Export a boxed type for MetaRectangle [Owen]
|
||||
* Allow disabling -Werror with --enable-compile-warnings=yes [Nickolas]
|
||||
* Build fixes [Andreas, Florian, Owen]
|
||||
|
||||
Contributors:
|
||||
Nickolas Lloyd, Andreas Mueller, Florian Müllner, Claudio Saavedra,
|
||||
Owen Taylor
|
||||
|
||||
Translations:
|
||||
Petr Kovar [cz], Jorge González [es], Fran Diéguez [gl],
|
||||
Yaron Shahrabani [he], Matej Urbančič [sl]
|
||||
|
||||
Fixed Bugs:
|
||||
587991 - Remove deprecated GTK+ symbols
|
||||
616275 - -Werror should not be enabled by default (or should be possible to disable)
|
||||
622303 - Allow building with Gtk+-3.0
|
||||
622800 - Make mutter more gtk+ 3.0 friendly
|
||||
623335 - Make MetaRectangle a boxed type
|
||||
623639 - Work around g-ir-scanner problem with Gdk.Rectangle
|
||||
624166 - src/core/util.c: Fix warning in case WITH_VERBOSE_MODE is not set
|
||||
|
||||
2.31.4
|
||||
======
|
||||
|
||||
* Clean up MutterPlugin effect interface [Maxim]
|
||||
* Track damage as the bounding box, a significant optimizations
|
||||
for rapidly drawing clients [Robert]
|
||||
* Add meta_window_is_remote() [Colin]
|
||||
* Add meta_add_debug_topic() for turning on logging of
|
||||
specific topics [Colin]
|
||||
* Fix bug with window unmaximization [Owen]
|
||||
|
||||
Contributors:
|
||||
Robert Bragg, Maxim Ermilov, Owen Taylor, Colin Walters
|
||||
|
||||
Translations:
|
||||
Yaron Shahrabani (he), Fran Diéguez (gl), Kjartan Maraas (nb), A S Alam (pa)
|
||||
|
||||
Fixed Bugs:
|
||||
611838 - expose sub-stage redraws by streaming raw updates to ClutterX11TexturePixmap
|
||||
620585 - Add meta_window_is_remote
|
||||
620860 - function ‘meta_display_open’
|
||||
621082 - MutterPluginManager should call plugin->switch_workspace,
|
||||
when screen doesn't have any window. Or function should be renamed.
|
||||
621413 - Maximize/Unmaximize not behaving properly for some non-gnome based programs
|
||||
|
||||
2.31.2
|
||||
======
|
||||
|
||||
* Theme enhancements [Owen]
|
||||
- Add a flexible version mechanism for themes -
|
||||
metacity-theme-3.xml is now supported, and can include
|
||||
version="> 3.2" type attributes on the root element or
|
||||
any subelement.
|
||||
- Add frame_x_center/frame_y_center variables
|
||||
- Allow a theme to turn on title ellipsization
|
||||
* Performance enhancements:
|
||||
- Stream raw damage updates to ClutterX11TexturePixmap
|
||||
to enable partial stage updates when windos change [Robert]
|
||||
- Don't trap XErrors in meta_compositor_process_event [Adel]
|
||||
* Add meta_prefs_override_preference_location(); this allows
|
||||
a plugin like GNOME Shell to redirect preferences to a
|
||||
plugin-specific location. [Owen]
|
||||
* Support a _MUTTER_HINTS window property; this is a string
|
||||
property holding key-value pairs with plugin-specific
|
||||
interpretation [Tomas]
|
||||
* Build with GSEAL_ENABLE [Florian, Javier]
|
||||
* Add meta_display_get_leader_window() [Tomas]
|
||||
* Add meta_display_sort_windows_by_stacking [Colin]
|
||||
* Export
|
||||
meta_display_get_last_user_time()
|
||||
meta_display_xserver_time_is_before()
|
||||
meta_window_foreach_ancestor(),
|
||||
meta_window_foreach_transient()
|
||||
meta_window_lower()
|
||||
meta_window_raise()
|
||||
meta_window_set_demands_attention()
|
||||
meta_window_unset_demands_attention() [Colin]
|
||||
* Bug fixes [Dan, Edward, Owen, Tomas]
|
||||
* Build fixes [Owen, Dominique, Vincent]
|
||||
|
||||
Contributors:
|
||||
Robert Bragg, Adel Gadllah, Tomas Frydrych, Javier Jardón,
|
||||
Dominique Leuenberger, Florian Müllner, Edward Sheldrake,
|
||||
Owen Taylor, Vincent Untz, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Xandru Armesto Fernandez (ast), Khaled Hosny (ar), Petr Kovar (cz),
|
||||
Mario Blättermann, (de), Jorge González (es),
|
||||
Inaki Larranaga Murgoitio [eu), Claude Paroz (fr), Luca Ferretti (it),
|
||||
Gintautas Miliauskas (lt), Pavol Šimo (sk), Matej Urbančič (sl)
|
||||
|
||||
Fixed Bugs:
|
||||
591842 - ellipsize titles when oversize
|
||||
592503 - Add a flexible version mechanism
|
||||
595496 - Use accessor functions instead direct access (use GSEAL GnomeGoal)
|
||||
596659 - Fix handling of grabbed key events
|
||||
613123 - Framework for plugin-specific per-window hint
|
||||
613125 - Add meta_display_get_leader_window()
|
||||
613127 - Keep num_workspaces key in sync with the actual workspace number
|
||||
613136 - remove over-restrictive assert from meta_prefs_get_workspace_name()
|
||||
613398 - Don't trap XErrors in meta_compositor_process_event
|
||||
615586 - Allow redirecting preferences to a different GConf key
|
||||
615672 - cant' compile mutter error: dereferencing pointer ‘p’ does break
|
||||
strict-aliasing rules
|
||||
616050 - alt-tab infrastructure patches
|
||||
616274 - mutter from git fails with gcc 4.5 (on new warning)
|
||||
616546 - On dual screen maximized windows dragged to the second screen no
|
||||
longer update their contents
|
||||
618138 - Work around COGL bug causing flash for new windows
|
||||
618613 - Fix crash with --sync option
|
||||
|
||||
2.29.1
|
||||
======
|
||||
|
||||
* Support and require Clutter 1.2 (Owen)
|
||||
* Add meta_display_get_keybinding_action() (Colin, Dan)
|
||||
* Add meta_window_get_wm_class_instance() (Tomas)
|
||||
* Remove workaround for bug fixed in intel driver Q2/2009 release (Robert)
|
||||
* Build fixes (Owen, Brian, Nguyễn Thái Ngọc Duy)
|
||||
|
||||
Contributors:
|
||||
Robert Bragg, Brian Cameron, Tomas Frydrych, Nguyễn Thái Ngọc Duy,
|
||||
Owen Taylor, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Alexander Shopov (bg), Mario Blättermann (de), Bruno Brouard (fr),
|
||||
Nils-Christoph Fiedler (nds), Piotr Drąg (pl), Aron Xu (zh_CN)
|
||||
|
||||
Fixed Bugs:
|
||||
|
||||
610862 Support and require Clutter 1.1
|
||||
612506 mutter 2.29.0 fails to compile on Solaris
|
||||
613100 [MetaDisplay] Expose meta_display_get_keybinding_action
|
||||
613121 Remove workaround for multitexturing with old intel drivers
|
||||
613128 [MetaWindow] Accessor for the instance part of WM_CLASS property
|
||||
613278 meta_display_get_keybinding_action: strip out uninteresting modifiers
|
||||
|
||||
2.29.0
|
||||
======
|
||||
|
||||
* Improve appearance of scaled down windows using mipmap emulation (Owen)
|
||||
* Added signals: MetaDisplay::window-created, MetaDisplay::window-marked-urgent,
|
||||
MetaDisplay::window-demands-attention, MetaWindow::unmanaged (Colin, Tomas)
|
||||
* Added properties: MetaWindow:demands-attention, MetaWindow:urgent,
|
||||
MetaWindow:maximized-horizontally, MetaWindow:maximized-vertically (Florian, Tomas)
|
||||
* Fix nasty crash when workspace "struts" changed during a window move (Jon, Owen)
|
||||
* Bug fixes (Dan, Maxim, Neil, Owen, Tomas)
|
||||
* Build fixes (Colin, Emmanuele, Nickolas, Owen, Richard)
|
||||
* Merge Metacity changes since 2.26. Includes themable sound support
|
||||
via libcanberra (Owen)
|
||||
|
||||
Contributors
|
||||
Emmanuele Bassi, Maxim Ermilov, Tomas Frydrych, Richard Hughes, Nickolas Lloyd,
|
||||
Florian Müllner, Jon Nettleton, Neil Roberts, Owen Taylor, Colin Walters,
|
||||
Dan Winship
|
||||
|
||||
Additional Metacity contributors:
|
||||
Thomas Hindoe Paaboel Andersen, Peter Bloomfield, Matthias Clasen,
|
||||
Matt Kraai, Claude Paroz, Lennart Poettering, Ray Strode, Thomas Thurman,
|
||||
Vincent Untz, Tomislav Vujec, Tomeu Vizoso, Travis Watkins, 'alexisdm59'
|
||||
|
||||
Translations:
|
||||
Khaled Hosny (ar), Petr Kovar (cz), Kjartan Maraas (nb), Djavan Fagundes (pt_BR),
|
||||
Nils-Christoph Fiedler (nds), Matej Urbančič (sl), Vincent Untz
|
||||
|
||||
Fixed Bugs:
|
||||
|
||||
588065 Adds demands-attention signal to the window class
|
||||
591913 Fails to skip current window on alt+tab when another window is asking for attention
|
||||
592567 Dereferencing NULL in mutter_window_get_workspace()
|
||||
597052 Add signal to MetaDisplay so we know when a window has demanded-attention
|
||||
598289 Add "window-created" signal to MetaDisplay, "unmanaged" signal for MetaWindow
|
||||
598473 "XXX specified twice for this theme" messages not in sync with metacity.
|
||||
598600 "Visual Bell" option in Metacity causes Mutter to crash
|
||||
600068 notifications for window urgency hint
|
||||
601228 rdesktop does not get keypress signals
|
||||
602349 [PATCH] trivial - fix compilation warning in mutter
|
||||
602740 Remove XOR gc only used in removed reduced-resources mode
|
||||
602870 Fix compilation with older libGL
|
||||
604200 Compile issue: Use of deprecated clutter functions
|
||||
606388 mutter fails to build when using ld with --no-add-needed
|
||||
607125 Fails to build with latest introspection data
|
||||
607398 Do not use CGL_* symbols
|
||||
607746 reduce gconf roundtrips at startup
|
||||
608800 alt-dragging gimp windows crashes gnome-shell
|
||||
609350 Mutter does not support the COGL_DEBUG environment variable
|
||||
609546 meta_workspace_set_builtin_struts(): optimize out non-changes
|
||||
609585 Merge libcanberra usage from Metacity
|
||||
609657 Use cogl multitexture API when drawing MutterShapedTexture
|
||||
609665 Bug fixes from Fedora RPM
|
||||
609710 screencast recording broke
|
||||
610391 Fix crash on startup with list bindings
|
||||
|
||||
2.28.0
|
||||
======
|
||||
|
||||
* New exported API:
|
||||
meta_window_get_stable_sequence() [Colin]
|
||||
meta_window_get_transient_for_as_xid() [Tomas]
|
||||
MutterScreen::workareas-changed signal [Tomas]
|
||||
* Fix a problem where changes processed from a Clutter event
|
||||
callback wouldn't get handled before the screen was next
|
||||
repainted, causing flashing [Owen]
|
||||
* Remove MetaAltTabHandler as no longer needed [Dan]
|
||||
* Bug fixes [Colin, Owen]
|
||||
|
||||
Contributors:
|
||||
Tomas Frydrych, Owen Taylor, Colin Walters, Dan Winship
|
||||
|
||||
Translations:
|
||||
Christian Kirbach (de), Claude Paroz (fr)
|
||||
|
||||
2.27.5
|
||||
======
|
||||
|
||||
* Fix bug in GConf schemas where the overview activation key was specified as
|
||||
'<Super_L>' not 'Super_L'.
|
||||
|
||||
Contributors:
|
||||
|
||||
Colin Walters
|
||||
|
||||
Translation:
|
||||
|
||||
Denis Arnaud (br)
|
||||
|
||||
2.27.4
|
||||
======
|
||||
|
||||
* Big code cleanup: when talking about multiple monitors, call them
|
||||
"monitors", not "xineramas". [Dan]
|
||||
|
||||
* Accessors added or made public:
|
||||
|
||||
meta_screen_get_n_monitors(), meta_screen_get_monitor_geometry()
|
||||
meta_window_get_user_time() and MetaWindow:user-time property.
|
||||
|
||||
[Colin, Dan]
|
||||
|
||||
* Set _GNOME_WM_KEYBINDINGS=Metacity,Mutter on the _NET_SUPPORTING_WM_CHECK
|
||||
window so that gnome-keybinding-properties can figure out to show the
|
||||
Metacity keybindings when Mutter is running. [Owen]
|
||||
|
||||
* Bug and build fixes [Colin, Owen]
|
||||
|
||||
Contributors:
|
||||
|
||||
Owen Taylor, Colin Walters, Dan Winship
|
||||
|
||||
Translation:
|
||||
|
||||
Jorge González (es), Inaki Larranaga Murgoitio (eu), Gabor Kelemen (hu)
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
592393 - Clicking on a minimized window in the overview doesn't focus the window
|
||||
593399 - Add meta_display_get_grab_op()
|
||||
593404 - Make MUTTER_DEBUG_XINERAMA override active Xinerama
|
||||
593407 - Add 'skip-taskbar' accessor to MetaWindow.
|
||||
593686 - Add meta_screen_get_monitors()
|
||||
594067 - Export a _GNOME_WM_KEYBINDINGS property
|
||||
|
||||
2.27.3
|
||||
======
|
||||
|
||||
* Key handling improvements:
|
||||
|
||||
- enforce that every key is handled no more than once.
|
||||
- mutter_plugin_begin_modal() and mutter_plugin_begin_modal() allow
|
||||
putting a plugin into a "modal" state where it has exclusive access
|
||||
to key and pointer events.
|
||||
- Add "tab_popup_select", "tab_pop_cancel" pseudo-keypress-handlers
|
||||
that plugins can use to get notification when Alt-Tab ends
|
||||
|
||||
[Owen]
|
||||
|
||||
* Accessors added or made public:
|
||||
|
||||
meta_window_is_override_redirect(), meta_window_is_mapped(),
|
||||
meta_display_xwindow_is_a_no_focus_window(),
|
||||
meta_display_get_grab_op(), meta_window_is_skip_taskbar(),
|
||||
meta_window_is_modal(), all of errors.h
|
||||
|
||||
[Colin, Owen, Michael, Steve, Tomas]
|
||||
|
||||
* Fix for various GTK+ deprecations [Javier]
|
||||
* Bug fixes [Colin, Frédéric, Owen, Thomas, Tomas, Volker]
|
||||
|
||||
Contributors:
|
||||
|
||||
Javier Jardón, Steve Frécinaux, Tomas Frydrych, Michael Meeks,
|
||||
Frédéric Péters, Volker Sobek, Owen Taylor, Thomas Thurman,
|
||||
Colin Walters
|
||||
|
||||
Translation:
|
||||
|
||||
Fran Dieguez (gl), Gabor Kelemen (hu), Daniel Nylander (se)
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
589457 - Fix up window property notification for "title"
|
||||
590911 - Do not run plugin effects on WM startup
|
||||
590978 - API to query whether window is in modal state
|
||||
591367 - Be silent by default
|
||||
591566 - install errors.h header ...
|
||||
591788 - Add meta_window_is_override_redirect
|
||||
591836 - mutter mishandles opacity
|
||||
591913 - Fails to skip current window on alt+tab when another window is asking for attention
|
||||
592393 - Clicking on a minimized window in the overview doesn't focus the window
|
||||
592699 - Remove deprecated Encoding key from desktop files
|
||||
592742 - Avoid accessing freed memory when being replaced
|
||||
593399 - Add meta_display_get_grab_op()
|
||||
593404 - Make MUTTER_DEBUG_XINERAMA override active Xinerama
|
||||
593407 - Add 'skip-taskbar' accessor to MetaWindow.
|
||||
|
||||
----------------------------- Older Metacity News -----------------------------
|
||||
|
||||
2.26.0
|
||||
======
|
||||
|
||||
Thanks to Luca Ferretti, Matt Kraai, and Neil Jagdish Patel for
|
||||
improvements in this version.
|
||||
|
||||
- queue frame resize on window undecorate (Neil)
|
||||
- fix description of desktop background (Luca) (#569649)
|
||||
- wrap g_error calls in braces (Matt)
|
||||
|
||||
Translations
|
||||
Amitakhya Phukan (as), Mikel González (ast), Ihar Hrachyshka (be@latin), Runa
|
||||
Bhattacharjee (bn_IN), David Planella (ca), Petr Kovar (cs), Ask Hjorth
|
||||
Larsen (da), Christian Kirbach (de), Jennie Petoumenou (el), David Lodge (en_GB),
|
||||
Jorge González (es), Mattias Põldaru (et), Iñaki Larrañaga Murgoitio (eu),
|
||||
Ilkka Tuohela (fi), Claude Paroz (fr), Ankit Patel (gu), Mark Krapivner (he),
|
||||
Rajesh Ranjan (hi), Gabor Kelemen (hu), Luca Ferretti (it), Takeshi AIHANA (ja),
|
||||
Changwoo Ryu (ko), Gintautas Miliauskas (lt), Sangeeta Kumari (mai), Sandeep
|
||||
Shedmake (mr), Wouter Bolsterlee (nl), Manoj Kumar Giri (or), Duarte Loreto (pt),
|
||||
Leonardo Ferreira Fontenelle (pt_BR), Adi Roiban (ro), Yuriy Penkin (ru), Daniel
|
||||
Nylander (sv), I. Felix (ta), Krishna Babu K (te), Theppitak Karoonboonyanan (th),
|
||||
Clytie Siddall (vi), Chao-Hsiung Liao (zh_HK), Chao-Hsiung Liao (zh_TW)
|
||||
|
||||
2.25.144
|
||||
========
|
||||
|
||||
|
84
README
84
README
@@ -12,7 +12,7 @@ The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-,
|
||||
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x,
|
||||
2.15.x, 2.17.x.
|
||||
|
||||
COMPILING METACITY
|
||||
COMPILING MUTTER
|
||||
===
|
||||
|
||||
You need GTK+ 2.2. For startup notification to work you need
|
||||
@@ -20,6 +20,7 @@ libstartup-notification at
|
||||
http://www.freedesktop.org/software/startup-notification/ or on the
|
||||
GNOME ftp site. You also need GConf 1.2 (unless building a funky
|
||||
extra-small embedded metacity with --disable-gconf, see below).
|
||||
You need Clutter 1.0. You need gobject-introspection 0.6.3.
|
||||
|
||||
REPORTING BUGS AND SUBMITTING PATCHES
|
||||
===
|
||||
@@ -36,47 +37,11 @@ Feel free to send patches too; Metacity is relatively small and
|
||||
simple, so if you find a bug or want to add a feature it should be
|
||||
pretty easy. Send me mail, or put the patch in bugzilla.
|
||||
|
||||
See the HACKING file for some notes on hacking Metacity.
|
||||
See the HACKING file for some notes on hacking Mutter.
|
||||
|
||||
SHRINKING METACITY
|
||||
MUTTER FEATURES
|
||||
===
|
||||
|
||||
Not that metacity is huge, but a substantial amount of code is in
|
||||
preferences handling, in static strings that aren't essential, and in
|
||||
the theme engine.
|
||||
|
||||
You can strip about 70K from the metacity binary by compiling with
|
||||
options such as:
|
||||
|
||||
--disable-gconf
|
||||
--disable-sm
|
||||
--disable-verbose
|
||||
--disable-startup-notification
|
||||
|
||||
However the result is no good for desktop use, all prefs have to be
|
||||
hardcoded in the binary, for example. If you wanted to make a really
|
||||
small metacity, here's some additional stuff you might consider
|
||||
implementing:
|
||||
|
||||
- add --disable-themes, which would replace theme.c and theme-parser.c
|
||||
with a hardcoded implementation of the interface in theme.h,
|
||||
should save about 80K. This should be fairly easy.
|
||||
|
||||
- add --disable-gtk, which would implement the interface in ui.h
|
||||
without using GTK. This one is easier than you think because the
|
||||
main part of the window manager doesn't use GTK directly, but is
|
||||
still fairly hard to do. You would probably have to give up some
|
||||
of the features, such as window menus, as menus are pretty complex
|
||||
to implement well. So time may be better spent adding a GTK
|
||||
configure script feature to build GTK with only a small core set of
|
||||
functionality.
|
||||
|
||||
METACITY FEATURES
|
||||
===
|
||||
|
||||
- Boring window manager for the adult in you. Many window managers
|
||||
are like Marshmallow Froot Loops; Metacity is like Cheerios.
|
||||
|
||||
- Uses GTK+ 2.0 for drawing window frames. This means colors, fonts,
|
||||
etc. come from GTK+ theme.
|
||||
|
||||
@@ -132,8 +97,6 @@ METACITY FEATURES
|
||||
Also try the GNOME keyboard shortcuts control panel, or
|
||||
gconf-editor.
|
||||
|
||||
See metacity.schemas for all available bindings.
|
||||
|
||||
- Window keybindings:
|
||||
|
||||
Alt-space window menu
|
||||
@@ -185,13 +148,13 @@ METACITY FEATURES
|
||||
|
||||
- Session management:
|
||||
|
||||
Metacity connects to the session manager and will set itself up to
|
||||
Mutter connects to the session manager and will set itself up to
|
||||
be respawned. It theoretically restores sizes/positions/workspace
|
||||
for session-aware applications.
|
||||
|
||||
- Metacity implements much of the EWMH window manager specification
|
||||
- Mutter implements much of the EWMH window manager specification
|
||||
from freedesktop.org, as well as the older ICCCM. Please refer to
|
||||
the COMPLIANCE file for information on metacity compliance with
|
||||
the COMPLIANCE file for information on mutter compliance with
|
||||
these standards.
|
||||
|
||||
- Uses Pango to render text, so has cool i18n capabilities.
|
||||
@@ -210,7 +173,7 @@ METACITY FEATURES
|
||||
- handles the window manager selection from the ICCCM. Will exit if
|
||||
another WM claims it, and can claim it from another WM if you pass
|
||||
the --replace argument. So if you're running another
|
||||
ICCCM-compliant WM, you can run "metacity --replace" to replace it
|
||||
ICCCM-compliant WM, you can run "mutter --replace" to replace it
|
||||
with Metacity.
|
||||
|
||||
- does basic colormap handling
|
||||
@@ -220,7 +183,7 @@ METACITY FEATURES
|
||||
HOW TO ADD EXTERNAL FEATURES
|
||||
===
|
||||
|
||||
You can write a metacity "plugin" such as a pager, window list, icon
|
||||
You can write a mutter "plugin" such as a pager, window list, icon
|
||||
box, task menu, or even things like "window matching" using the
|
||||
Extended Window Manager Hints. See http://www.freedesktop.org for the
|
||||
EWMH specification. An easy-to-use library called "libwnck" is
|
||||
@@ -228,10 +191,10 @@ available that uses the EWMH and is specifically designed for writing
|
||||
WM accessories.
|
||||
|
||||
You might be interested in existing accessories such as "Devil's Pie"
|
||||
by Ross Burton, which add features to Metacity (or other
|
||||
by Ross Burton, which add features to Mutter (or other
|
||||
EWMH-compliant WMs).
|
||||
|
||||
METACITY BUGS, NON-FEATURES, AND CAVEATS
|
||||
MUTTER BUGS, NON-FEATURES, AND CAVEATS
|
||||
===
|
||||
|
||||
See bugzilla: http://bugzilla.gnome.org/query.cgi
|
||||
@@ -270,26 +233,15 @@ A: If it makes sense to turn on unconditionally, or is genuinely a
|
||||
http://pobox.com/~hp/free-software-ui.html
|
||||
http://pobox.com/~hp/features.html
|
||||
|
||||
Q: Will Metacity be part of GNOME?
|
||||
Q: Will Mutter be part of GNOME?
|
||||
|
||||
A: It is officially part of GNOME as of GNOME 2.2. Prior to that,
|
||||
it was unofficially shipped as the default GNOME WM by several
|
||||
OS vendors.
|
||||
A: It is not officially part of GNOME as of GNOME 2.27. We are
|
||||
hoping to have mutter officially included as of GNOME 2.28.
|
||||
|
||||
Q: Is Metacity a Red Hat project?
|
||||
|
||||
A: Metacity's original creation was in no way funded, endorsed, or
|
||||
encouraged by Red Hat, Inc. - I'm guessing Red Hat would not
|
||||
consider "insufficient number of window managers for Linux" an
|
||||
urgent problem. Just a wild guess though.
|
||||
|
||||
Now that metacity is the default WM however, Red Hat supports some
|
||||
bugfixing and other work.
|
||||
|
||||
Q: Why does Metacity remember the workspace/position of some apps
|
||||
Q: Why does Mutter remember the workspace/position of some apps
|
||||
but not others across logout/login?
|
||||
|
||||
A: Metacity only stores sizes/positions for apps that are session
|
||||
A: Mutter only stores sizes/positions for apps that are session
|
||||
managed. As far as I can determine, there is no way to attempt to
|
||||
remember workspace/position for non-session-aware apps without
|
||||
causing a lot of weird effects.
|
||||
@@ -304,7 +256,7 @@ A: Metacity only stores sizes/positions for apps that are session
|
||||
place. And in fact I see a lot of bugs like this in window managers
|
||||
that try to handle non-session-aware apps.
|
||||
|
||||
However, for session-aware apps, Metacity can tell that the
|
||||
However, for session-aware apps, Mutter can tell that the
|
||||
application instance is from the session and thus restore it
|
||||
reliably, assuming the app properly restores the windows it had
|
||||
open on session save.
|
||||
@@ -456,7 +408,7 @@ A: There are quite a few, though many opportunities remain. Sometimes
|
||||
|
||||
- and much more.
|
||||
|
||||
Q: I think metacity sucks.
|
||||
Q: I think mutter sucks.
|
||||
|
||||
A: Feel free to use any WM you like. The reason metacity follows the
|
||||
ICCCM and EWMH specifications is that it makes metacity a modular,
|
||||
|
@@ -4,7 +4,7 @@
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="metacity"
|
||||
PKG_NAME="mutter"
|
||||
REQUIRED_AUTOMAKE_VERSION=1.10
|
||||
|
||||
(test -f $srcdir/configure.in \
|
||||
|
411
configure.in
411
configure.in
@@ -1,41 +1,40 @@
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
m4_define([metacity_major_version], [2])
|
||||
m4_define([metacity_minor_version], [25])
|
||||
# Fibonacci sequence for micro version numbering:
|
||||
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
|
||||
m4_define([metacity_micro_version], [144])
|
||||
m4_define([mutter_version],[0.1])
|
||||
m4_define([metacity_version],
|
||||
[metacity_major_version.metacity_minor_version.metacity_micro_version~mutter_version])
|
||||
m4_define([mutter_major_version], [3])
|
||||
m4_define([mutter_minor_version], [2])
|
||||
m4_define([mutter_micro_version], [2])
|
||||
|
||||
m4_define([metacity_clutter_plugin_api_version], [2])
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
|
||||
AC_INIT([metacity], [metacity_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
|
||||
m4_define([mutter_plugin_api_version], [3])
|
||||
|
||||
AC_INIT([mutter], [mutter_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
|
||||
|
||||
AC_CONFIG_SRCDIR(src/core/display.c)
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_MAINTAINER_MODE
|
||||
AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar])
|
||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
|
||||
AM_MAINTAINER_MODE([enable])
|
||||
|
||||
METACITY_MAJOR_VERSION=metacity_major_version
|
||||
METACITY_MINOR_VERSION=metacity_minor_version
|
||||
METACITY_MICRO_VERSION=metacity_micro_version
|
||||
METACITY_CLUTTER_PLUGIN_API_VERSION=metacity_clutter_plugin_api_version
|
||||
AC_SUBST(METACITY_MAJOR_VERSION)
|
||||
AC_SUBST(METACITY_MINOR_VERSION)
|
||||
AC_SUBST(METACITY_MICRO_VERSION)
|
||||
AC_SUBST(METACITY_CLUTTER_PLUGIN_API_VERSION)
|
||||
MUTTER_MAJOR_VERSION=mutter_major_version
|
||||
MUTTER_MINOR_VERSION=mutter_minor_version
|
||||
MUTTER_MICRO_VERSION=mutter_micro_version
|
||||
MUTTER_PLUGIN_API_VERSION=mutter_plugin_api_version
|
||||
AC_SUBST(MUTTER_MAJOR_VERSION)
|
||||
AC_SUBST(MUTTER_MINOR_VERSION)
|
||||
AC_SUBST(MUTTER_MICRO_VERSION)
|
||||
AC_SUBST(MUTTER_PLUGIN_API_VERSION)
|
||||
|
||||
MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins/clutter"
|
||||
MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins"
|
||||
AC_SUBST(MUTTER_PLUGIN_DIR)
|
||||
|
||||
# Honor aclocal flags
|
||||
AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
|
||||
|
||||
GETTEXT_PACKAGE=metacity
|
||||
GETTEXT_PACKAGE=mutter
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
|
||||
|
||||
@@ -46,6 +45,9 @@ AC_HEADER_STDC
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
# Sets GLIB_GENMARSHAL and GLIB_MKENUMS
|
||||
AM_PATH_GLIB_2_0()
|
||||
|
||||
#### Integer sizes
|
||||
|
||||
AC_CHECK_SIZEOF(char)
|
||||
@@ -59,70 +61,11 @@ AC_CHECK_SIZEOF(__int64)
|
||||
## byte order
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
#### Warnings
|
||||
GTK_MIN_VERSION=2.91.7
|
||||
CANBERRA_GTK=libcanberra-gtk3
|
||||
CANBERRA_GTK_VERSION=0.26
|
||||
|
||||
changequote(,)dnl
|
||||
if test "x$GCC" = "xyes"; then
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wall[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wall" ;;
|
||||
esac
|
||||
|
||||
# case " $CFLAGS " in
|
||||
# *[\ \ ]-Wshadow[\ \ ]*) ;;
|
||||
# *) CFLAGS="$CFLAGS -Wshadow" ;;
|
||||
# esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wchar-subscripts[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wmissing-declarations[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wmissing-prototypes[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wnested-externs[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wnested-externs" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wpointer-arith[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wpointer-arith" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wcast-align[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wcast-align" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wsign-compare[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wsign-compare" ;;
|
||||
esac
|
||||
|
||||
if test "x$enable_ansi" = "xyes"; then
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-ansi[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -ansi" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-pedantic[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -pedantic" ;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0'
|
||||
MUTTER_PC_MODULES="gtk+-3.0 >= $GTK_MIN_VERSION pango >= 1.2.0 cairo >= 1.10.0"
|
||||
|
||||
AC_ARG_ENABLE(gconf,
|
||||
AC_HELP_STRING([--disable-gconf],
|
||||
@@ -131,12 +74,12 @@ AC_ARG_ENABLE(gconf,
|
||||
|
||||
if test x$enable_gconf = xyes; then
|
||||
AC_DEFINE(HAVE_GCONF,1,[Build with gconf support])
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES gconf-2.0 >= 1.2.0"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gconf-2.0 >= 1.2.0"
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(verbose-mode,
|
||||
AC_HELP_STRING([--disable-verbose-mode],
|
||||
[disable metacity's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
|
||||
[disable mutter's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
|
||||
enable_verbose_mode=yes)
|
||||
|
||||
if test x$enable_verbose_mode = xyes; then
|
||||
@@ -145,37 +88,27 @@ fi
|
||||
|
||||
AC_ARG_ENABLE(sm,
|
||||
AC_HELP_STRING([--disable-sm],
|
||||
[disable metacity's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
[disable mutter's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
enable_sm=auto)
|
||||
|
||||
AC_ARG_ENABLE(startup-notification,
|
||||
AC_HELP_STRING([--disable-startup-notification],
|
||||
[disable metacity's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
[disable mutter's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
enable_startup_notification=auto)
|
||||
|
||||
AC_ARG_ENABLE(compositor,
|
||||
AC_HELP_STRING([--disable-compositor],
|
||||
[disable metacity's compositing manager]),,
|
||||
enable_compositor=auto)
|
||||
|
||||
AC_ARG_WITH(clutter,
|
||||
AC_HELP_STRING([--with-clutter],
|
||||
[Use clutter for compositing]),,
|
||||
with_clutter=auto)
|
||||
AC_ARG_WITH(libcanberra,
|
||||
AC_HELP_STRING([--without-libcanberra],
|
||||
[disable the use of libcanberra for playing sounds]),,
|
||||
with_libcanberra=auto)
|
||||
|
||||
AC_ARG_ENABLE(xsync,
|
||||
AC_HELP_STRING([--disable-xsync],
|
||||
[disable metacity's use of the XSync extension]),,
|
||||
[disable mutter's use of the XSync extension]),,
|
||||
enable_xsync=auto)
|
||||
|
||||
AC_ARG_ENABLE(render,
|
||||
AC_HELP_STRING([--disable-render],
|
||||
[disable metacity's use of the RENDER extension]),,
|
||||
enable_render=auto)
|
||||
|
||||
AC_ARG_ENABLE(shape,
|
||||
AC_HELP_STRING([--disable-shape],
|
||||
[disable metacity's use of the shaped window extension]),,
|
||||
[disable mutter's use of the shaped window extension]),,
|
||||
enable_shape=auto)
|
||||
|
||||
## try definining HAVE_BACKTRACE
|
||||
@@ -184,17 +117,11 @@ AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
## here we get the flags we'll actually use
|
||||
# GOptionEntry requires glib-2.6.0
|
||||
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.6.0)
|
||||
# gtk_window_set_icon_name requires gtk2+-2.60
|
||||
PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-2.0 >= 2.6.0)
|
||||
PKG_CHECK_MODULES(METACITY_WINDOW_DEMO, gtk+-2.0 >= 2.6.0)
|
||||
|
||||
if $PKG_CONFIG --atleast-version 1.2.0 pangoxft; then
|
||||
echo "pangoxft found"
|
||||
else
|
||||
AC_MSG_ERROR("Pango 1.2.0 or greater based on Xft2 is required")
|
||||
fi
|
||||
# GRegex requires Glib-2.14.0
|
||||
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0)
|
||||
# gtk_window_set_icon_name requires gtk2+-2.6.0
|
||||
PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-3.0 >= $GTK_MIN_VERSION)
|
||||
PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-3.0 >= $GTK_MIN_VERSION)
|
||||
|
||||
# Unconditionally use this dir to avoid a circular dep with gnomecc
|
||||
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
||||
@@ -220,107 +147,68 @@ fi
|
||||
|
||||
if test x$have_startup_notification = xyes; then
|
||||
echo "Building with libstartup-notification"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION"
|
||||
AC_DEFINE(HAVE_STARTUP_NOTIFICATION, , [Building with startup notification support])
|
||||
else
|
||||
echo "Building without libstartup-notification"
|
||||
fi
|
||||
|
||||
## init this, it gets set either in the compositor check below
|
||||
## or the render-specific check later
|
||||
have_xrender=no
|
||||
have_libcanberra=no
|
||||
AC_MSG_CHECKING([libcanberra-gtk])
|
||||
if test x$with_libcanberra = xno ; then
|
||||
AC_MSG_RESULT([disabled])
|
||||
else
|
||||
if $PKG_CONFIG --exists $CANBERRA_GTK '>=' $CANBERRA_GTK_VERSION; then
|
||||
have_libcanberra=yes
|
||||
AC_MSG_RESULT(yes)
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES $CANBERRA_GTK"
|
||||
AC_DEFINE([HAVE_LIBCANBERRA], 1, [Building with libcanberra for playing sounds])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test x$with_libcanberra = xyes ; then
|
||||
AC_MSG_ERROR([libcanberra forced and libcanberra-gtk was not found])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
XCOMPOSITE_VERSION=0.2
|
||||
if test x$enable_compositor = xyes; then
|
||||
have_xcomposite=yes
|
||||
elif test x$enable_compositor = xauto; then
|
||||
echo "Building compositing manager by default now."
|
||||
have_xcomposite=yes
|
||||
else
|
||||
have_xcomposite=no
|
||||
fi
|
||||
|
||||
if test x$with_clutter = xyes; then
|
||||
have_xcomposite=yes
|
||||
have_clutter=yes
|
||||
echo "CompositeExt support and Clutter forced on"
|
||||
elif test x$with_clutter = xauto; then
|
||||
have_clutter=no
|
||||
else
|
||||
have_clutter=no
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(WITH_CLUTTER, test "$have_clutter" = "yes")
|
||||
|
||||
if test x$have_xcomposite = xyes; then
|
||||
AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_ERROR([no. Use --disable-compositor to disable.])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$have_xcomposite = xyes; then
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
|
||||
AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
|
||||
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, 1, [Building with compositing manager support])
|
||||
echo "Building with compositing manager"
|
||||
|
||||
## force on render also
|
||||
have_xrender=yes
|
||||
else
|
||||
echo "Building without compositing manager"
|
||||
AC_MSG_ERROR([no. Mutter requires the Xcomposite extension to build.])
|
||||
fi
|
||||
|
||||
## if no compositor, still possibly enable render
|
||||
if test x$have_xcomposite = xno; then
|
||||
XRENDER_VERSION=0.0
|
||||
AC_MSG_CHECKING([xrender >= $XRENDER_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $XRENDER_VERSION xrender; then
|
||||
have_xrender=yes
|
||||
else
|
||||
have_xrender=no
|
||||
fi
|
||||
AC_MSG_RESULT($have_xrender)
|
||||
|
||||
if test x$enable_render = xyes; then
|
||||
have_xrender=yes
|
||||
echo "Render support forced on"
|
||||
elif test x$enable_render = xauto; then
|
||||
true
|
||||
else
|
||||
have_xrender=no
|
||||
fi
|
||||
|
||||
if test x$have_xrender = xyes; then
|
||||
echo "Building with Render"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xrender >= $XRENDER_VERSION"
|
||||
fi
|
||||
fi ## have_composite
|
||||
|
||||
if test x$have_xrender = xyes; then
|
||||
AC_DEFINE(HAVE_RENDER, , [Building with Render extension support])
|
||||
fi
|
||||
|
||||
CLUTTER_PACKAGE=clutter-0.9
|
||||
CLUTTER_VERSION=1.7.5
|
||||
CLUTTER_PACKAGE=clutter-1.0
|
||||
AC_SUBST(CLUTTER_PACKAGE)
|
||||
if test x$have_clutter = xyes; then
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES $CLUTTER_PACKAGE "
|
||||
if $PKG_CONFIG --atleast-version $CLUTTER_VERSION $CLUTTER_PACKAGE ; then
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES $CLUTTER_PACKAGE "
|
||||
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)
|
||||
AC_DEFINE(WITH_CLUTTER, , [Building with Clutter compositor])
|
||||
else
|
||||
AC_MSG_ERROR([no. Mutter requires Clutter version $CLUTTER_VERSION.])
|
||||
fi
|
||||
|
||||
dnl Check for the clutter-glx-texture-pixmap header
|
||||
metacity_save_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $CLUTTER_CFLAGS"
|
||||
AC_CHECK_HEADER([clutter/glx/clutter-glx-texture-pixmap.h],
|
||||
[have_glx_texture_pixmap=yes],
|
||||
[have_glx_texture_pixmap=no])
|
||||
CPPFLAGS="$metacity_save_cppflags"
|
||||
INTROSPECTION_VERSION=0.9.5
|
||||
GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION])
|
||||
|
||||
if test x$have_glx_texture_pixmap = xyes; then
|
||||
AC_DEFINE(HAVE_GLX_TEXTURE_PIXMAP, ,
|
||||
[Is ClutterGLXTexturePixmap available?])
|
||||
fi
|
||||
if test x$found_introspection != xno; then
|
||||
AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available])
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0"
|
||||
# Since we don't make any guarantees about stability and we don't support
|
||||
# parallel install, there's no real reason to change directories, filenames,
|
||||
# etc. as we change the Mutter tarball version. Note that this must match
|
||||
# api_version in src/Makefile.am
|
||||
META_GIR=Meta_3_0_gir
|
||||
# META_GIR=[Meta_]mutter_major_version[_]mutter_minor_version[_gir]
|
||||
AC_SUBST(META_GIR)
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([Xcursor])
|
||||
@@ -333,23 +221,23 @@ if $PKG_CONFIG xcursor; then
|
||||
|
||||
if test x$have_xcursor = xyes; then
|
||||
echo "Building with Xcursor"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcursor"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor"
|
||||
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES(METACITY, $METACITY_PC_MODULES)
|
||||
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
||||
|
||||
AC_PATH_XTRA
|
||||
|
||||
ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
# Check for Xinerama extension (Solaris impl or Xfree impl)
|
||||
metacity_save_cppflags="$CPPFLAGS"
|
||||
mutter_save_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
||||
|
||||
AC_ARG_ENABLE(xinerama,
|
||||
AC_HELP_STRING([--disable-xinerama],
|
||||
[disable metacity's use of the Xinerama extension]),
|
||||
[disable mutter's use of the Xinerama extension]),
|
||||
try_xinerama=$enable_xinerama,try_xinerama=yes)
|
||||
|
||||
use_solaris_xinerama=no
|
||||
@@ -395,7 +283,7 @@ if test "${try_xinerama}" != no; then
|
||||
esac
|
||||
fi
|
||||
|
||||
CPPFLAGS="$metacity_save_cppflags"
|
||||
CPPFLAGS="$mutter_save_cppflags"
|
||||
|
||||
SHAPE_LIBS=
|
||||
found_shape=no
|
||||
@@ -466,21 +354,21 @@ if test "x$found_xsync" = "xyes"; then
|
||||
AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library])
|
||||
fi
|
||||
|
||||
METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
||||
METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
||||
MUTTER_MESSAGE_LIBS="$MUTTER_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
MUTTER_WINDOW_DEMO_LIBS="$MUTTER_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
||||
MUTTER_PROPS_LIBS="$MUTTER_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
found_sm=no
|
||||
case "$METACITY_LIBS" in
|
||||
case "$MUTTER_LIBS" in
|
||||
*-lSM*)
|
||||
found_sm=yes
|
||||
;;
|
||||
*)
|
||||
AC_CHECK_LIB(SM, SmcSaveYourselfDone,
|
||||
[AC_CHECK_HEADERS(X11/SM/SMlib.h,
|
||||
METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=yes)],
|
||||
, $METACITY_LIBS)
|
||||
MUTTER_LIBS="-lSM -lICE $MUTTER_LIBS" found_sm=yes)],
|
||||
, $MUTTER_LIBS)
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -536,26 +424,88 @@ if test "x$enable_debug" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -g -O"
|
||||
fi
|
||||
|
||||
# Warnings are there for a reason
|
||||
if test "x$GCC" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -Wall -Werror -ansi"
|
||||
fi
|
||||
# For fix-meta-rectangle.py
|
||||
AM_PATH_PYTHON([2.5])
|
||||
|
||||
# Use gnome-doc-utils:
|
||||
GNOME_DOC_INIT([0.8.0])
|
||||
|
||||
#### Warnings (last since -Werror can disturb other tests)
|
||||
|
||||
# Stay command-line compatible with the gnome-common configure option. Here
|
||||
# minimum/yes/maximum are the same, however.
|
||||
AC_ARG_ENABLE(compile_warnings,
|
||||
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
|
||||
enable_compile_warnings=error)
|
||||
|
||||
changequote(,)dnl
|
||||
if test "$enable_compile_warnings" != no ; then
|
||||
if test "x$GCC" = "xyes"; then
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wall[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wall" ;;
|
||||
esac
|
||||
|
||||
# case " $CFLAGS " in
|
||||
# *[\ \ ]-Wshadow[\ \ ]*) ;;
|
||||
# *) CFLAGS="$CFLAGS -Wshadow" ;;
|
||||
# esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wchar-subscripts[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wmissing-declarations[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wmissing-prototypes[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wnested-externs[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wnested-externs" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wpointer-arith[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wpointer-arith" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wcast-align[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wcast-align" ;;
|
||||
esac
|
||||
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Wsign-compare[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Wsign-compare" ;;
|
||||
esac
|
||||
|
||||
if test "$enable_compile_warnings" = error; then
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-Werror[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -Werror" ;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
doc/Makefile
|
||||
doc/creating_themes/Makefile
|
||||
doc/man/Makefile
|
||||
src/Makefile
|
||||
src/wm-tester/Makefile
|
||||
src/libmetacity-private.pc
|
||||
src/metacity-plugins.pc
|
||||
src/libmutter.pc
|
||||
src/mutter-plugins.pc
|
||||
src/tools/Makefile
|
||||
src/themes/Makefile
|
||||
src/compositor/mutter/plugins/Makefile
|
||||
src/compositor/plugins/Makefile
|
||||
po/Makefile.in
|
||||
])
|
||||
|
||||
@@ -571,14 +521,14 @@ fi
|
||||
if test x$enable_verbose_mode = xno; then
|
||||
echo "*** WARNING WARNING WARNING WARNING WARNING"
|
||||
echo "*** Building without verbose mode"
|
||||
echo "*** This means there's no way to debug metacity problems."
|
||||
echo "*** Please build normal desktop versions of metacity"
|
||||
echo "*** This means there's no way to debug mutter problems."
|
||||
echo "*** Please build normal desktop versions of mutter"
|
||||
echo "*** with verbose mode enabled so users can use it when they report bugs."
|
||||
fi
|
||||
|
||||
dnl ==========================================================================
|
||||
echo "
|
||||
metacity-$VERSION:
|
||||
mutter-$VERSION
|
||||
|
||||
prefix: ${prefix}
|
||||
source code location: ${srcdir}
|
||||
@@ -588,22 +538,21 @@ metacity-$VERSION:
|
||||
XFree86 Xinerama: ${use_xfree_xinerama}
|
||||
Solaris Xinerama: ${use_solaris_xinerama}
|
||||
Startup notification: ${have_startup_notification}
|
||||
Compositing manager: ${have_xcomposite}
|
||||
libcanberra: ${have_libcanberra}
|
||||
Introspection: ${found_introspection}
|
||||
Session management: ${found_sm}
|
||||
Shape extension: ${found_shape}
|
||||
Resize-and-rotate: ${found_randr}
|
||||
Xsync: ${found_xsync}
|
||||
Render: ${have_xrender}
|
||||
Xcursor: ${have_xcursor}
|
||||
Clutter: ${have_clutter}
|
||||
"
|
||||
|
||||
METACITY_MINOR_VERSION=metacity_minor_version
|
||||
if test $(( $(echo $METACITY_MINOR_VERSION) %2)) == "1"; then
|
||||
stable_version=$(( ($METACITY_MINOR_VERSION / 2) * 2))
|
||||
echo "This is the UNSTABLE branch of metacity"
|
||||
|
||||
MUTTER_MINOR_VERSION=mutter_minor_version
|
||||
if expr $MUTTER_MINOR_VERSION % 2 > /dev/null ; then
|
||||
stable_version=`expr $MUTTER_MINOR_VERSION - 1`
|
||||
echo "This is the UNSTABLE branch of mutter"
|
||||
echo -n "Use 2.$stable_version.x for stable "
|
||||
echo "(gnome-2-$stable_version branch in Subversion)"
|
||||
echo "(gnome-2-$stable_version branch in git)"
|
||||
else
|
||||
echo "This is the stable branch of metacity"
|
||||
echo "This is the stable branch of mutter"
|
||||
fi
|
||||
|
@@ -1,4 +1,4 @@
|
||||
SUBDIRS = man creating_themes
|
||||
SUBDIRS = man
|
||||
|
||||
EXTRA_DIST=theme-format.txt metacity-theme.dtd dialogs.txt code-overview.txt \
|
||||
EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \
|
||||
how-to-get-focus-right.txt
|
||||
|
@@ -42,5 +42,5 @@ options you can set are:
|
||||
menus zooming, dialogues being semi-transparent, and so on. Try it
|
||||
and see whether you like it.
|
||||
|
||||
If you have any problems, ask on metacity-devel-list@gnome.org, or
|
||||
If you have any problems, ask on mutter-devel-list@gnome.org, or
|
||||
#gnome-hackers on gimpnet, or come and find me (tthurman at gnome) and ask.
|
||||
|
@@ -1,286 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://docbook.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
]>
|
||||
|
||||
<book id="index">
|
||||
|
||||
<bookinfo>
|
||||
|
||||
<title>Understanding Metacity Themes</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Thomas</firstname>
|
||||
<surname>Thurman</surname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<abstract>
|
||||
|
||||
<para>
|
||||
We very much appreciate any reports of inaccuracies or other errors in
|
||||
this document. Contributions are also most welcome. Post your
|
||||
suggestions, critiques or addenda to the <ulink
|
||||
url="mailto:tthurman@gnome.org">team</ulink>.</para>
|
||||
|
||||
</abstract>
|
||||
|
||||
<copyright>
|
||||
<year>2008</year>
|
||||
<holder>Thomas Thurman</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
</para>
|
||||
</legalnotice>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="sec-introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>This is an article about how to theme Metacity. It is a work in progress, and I have had to dig deeply to find some answers; I may well have made mistakes and I welcome corrections and suggestions.</para>
|
||||
<para>GNOME lets you theme a bunch of different things, but we're only talking about <literal>window border</literal> themes here, which some people call Metacity themes; <ulink url="http://en.wikipedia.org/wiki/Metacity#Themes">Wikipedia begins a sentence</ulink> with "Despite the incomplete state of Metacity theme development documentation", and though there <emphasis>is</emphasis> <ulink url="http://svn.gnome.org/viewvc/metacity/trunk/doc/theme-format.txt?view=markup">documentation in the source</ulink>, apparently not many people find it, and it's written more for programmers than theme designers. Glynn Foster also wrote <ulink url="http://developer.gnome.org/doc/tutorials/metacity/metacity-themes.html">a very good introduction to Metacity themes</ulink> (<ulink url="http://home.arcor.de/rybaczyk/documents/tutorials/metacity/metacity-themes.de.html">[de]</ulink>) six years ago, but things have changed a little since then. <ulink url="http://lists.freedesktop.org/archives/compiz/2006-September/000445.html">Metacity themes can also be used by Compiz</ulink>, and perhaps by other window managers for all I know.</para>
|
||||
|
||||
<para>So, a Metacity theme is a set of instructions about how to "decorate" (draw the borders around) a window. Presumably you don't want to style all windows identically, so the format lets you specify details for different kinds of window:</para>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>state:</term><listitem><para>Every window must be in exactly one of these states: <literal>normal</literal>, <literal>dialog</literal>, <literal>modal dialog</literal> (i.e. a dialogue which means you can't interact with the rest of the program while it's up), <literal>menu</literal> (torn off from the main application, not that people do that much these days), <literal>utility</literal> (that is, palettes and toolboxes and things), and <literal>border</literal>. X also allows a window to explicitly ask to be undecorated, but of course we don't provide for those in a list of decoration instructions.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>focused</term><listitem><para>Every window is either the active window (which X people call "focused"), or it isn't.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>maximized</term><listitem><para>Every window is either (fully) maximised (horizontal and vertical only don't count), or it isn't.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>shaded</term><listitem><para>Every window is either rolled up to show just its titlebar (which techies call "shaded" for some reason I can't fathom), or it isn't.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>If a window is not fully maximised and not shaded,</emphasis> it either allows horizontal resizing, or it doesn't.</para></listitem>
|
||||
<listitem><para><emphasis>If a window is not fully maximised and not shaded,</emphasis> it either allows vertical resizing, or it doesn't.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>What's in the file</title>
|
||||
|
||||
<para>The files must be called either</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>~/.themes/<varname>N</varname>/metacity-1/metacity-theme-<varname>V</varname>.xml
|
||||
for a theme used only by you, or</para></listitem>
|
||||
<listitem><para>/usr/share/themes/<varname>N</varname>/metacity-1/metacity-theme-<varname>V</varname>.xml
|
||||
for a theme installed for all users.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>where <varname>N</varname> is the name of the theme and <varname>V</varname> is the version of the format. Version 2, <ulink url="http://svn.gnome.org/viewvc/metacity?view=revision&revision=2973">introduced in October 2006</ulink>, adds a few extra features, but it's rarely used. Version 1 is the original format. The formats are fixed once they're stable for both backwards and forwards compatibility; <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=482165">new features</ulink> can't be added without introducing a new version number, which is why improvements come out rarely and in large clumps. <literal>metacity-1</literal> in the names is a fossil and doesn't mean version 1 of anything.</para>
|
||||
|
||||
<para>The metacity-theme-V.xml files are <ulink url="http://blogs.gnome.org/tthurman/2008/02/14/gmarkup/">GMarkup files</ulink>, which are very similar to XML. For now, you actually have to write these in a text editor or something; you can either start with a blank page, or modify a theme someone else has made. (I am thinking of writing a general theme editor program, but that'll have to wait until I've reduced Metacity's open bug queue a little.) If you want to see a fully-fledged one, you can look at <ulink url="http://svn.gnome.org/viewvc/metacity/trunk/src/themes/Atlanta/metacity-theme-1.xml?view=markup">the current version of "Atlanta"</ulink>, one of the simplest themes, but even that is quite complicated-looking at first.</para>
|
||||
<para>So, let's talk about what actually goes inside the files. As in any XML file, <!-<!-- x -->- … <!-- x -->> are comments. At its most basic, it would go:</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
<metacity_theme>
|
||||
<!-<!-- x -->- Helper stuff: -<!-- x -->->
|
||||
<info …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
<constant …> <!-<!-- x -->- maybe; to be explained -<!-- x -->->
|
||||
|
||||
<draw_ops …> <!-<!-- x -->- maybe; to be explained -<!-- x -->->
|
||||
|
||||
<!-<!-- x -->- Things we build the top level onto: -<!-- x -->->
|
||||
<frame_geometry …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
|
||||
<frame_style …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
<frame_style_set …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
|
||||
<!-<!-- x -->- And the top level: -<!-- x -->->
|
||||
|
||||
<window type="normal" style_set="…" />
|
||||
<window type="dialog" style_set="…" />
|
||||
<window type="modal_dialog" style_set="…" />
|
||||
|
||||
<window type="menu" style_set="…" />
|
||||
<window type="utility" style_set="…" />
|
||||
<window type="border" style_set="…" />
|
||||
|
||||
</metacity_theme>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Matching windows</title>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>window</term><listitem><para>You see that at the top level we have a list of <window> tags, one for each window state we discussed above. The style_set argument of each of these gives the name of a frame_style_set.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>frame_style_set:</term><listitem><para>tells Metacity how to draw windows according to whether they're focused or not, maximised or not, shaded or not, and allowing resizing vertically, horizontally, both, or neither. It looks like this:</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
<frame_style_set>
|
||||
<frame focus="F" state="S" resize="R" style="N"/>
|
||||
<frame… />
|
||||
|
||||
…
|
||||
</frame_style_set>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>where:</para>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>F</term><listitem><para>is yes for focused, no for unfocused.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>S</term><listitem><para>combines the shaded and maximized flags: normal, maximized, shaded, or maximized_and_shaded.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>R</term><listitem><para>represents resize permissions that the window gives us: none, vertical, horizontal, or both. Frame settings for maximised windows, which can't be resized, don't have this attribute.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<varname>N</varname> is the name of a <literal>frame_style</literal> to apply to a window which has these attributes.</para>
|
||||
|
||||
<para>A <literal>frame_style_set</literal> tag may also have a "parent" tag, which should be the name of another <literal>frame_style_set</literal>. This means that if Metacity wants to know about a kind of window which that <literal>frame_style_set</literal> doesn't describe, it should look in the parent. Most of the more complicated tags in Metacity theme files also have a "parent" attribute which work the same way. This is particularly useful because, taken together, all the <literal>frame_style_set</literal>s in a theme file must be capable of matching every possible kind of window; if a window turns up that they can't match, there will be an error at runtime.</para>
|
||||
|
||||
<para>Let's recap what we've seen so far. The combination of a <literal>window</literal>, which matches a window's state (normal, dialog, and so forth), with an entry in the corresponding <literal>frame_style_set</literal>, which matches its focus, shadedness, maximisedness, and resize permissions where relevant, will allow you to make a list of rules to match any window against. The next piece of this puzzle lets you specify what Metacity should do with such windows once it's matched them.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Actually drawing stuff</title>
|
||||
|
||||
<para><literal>frame_style:</literal> This is probably the most complicated part of the whole system. A <literal>frame_style</literal> a series of <emphasis><literal>piece</literal></emphasis>s and <emphasis><literal>button</literal></emphasis>s. It looks like this:</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
<frame_style name="…" geometry="G">
|
||||
<piece position="P">
|
||||
<draw_ops>
|
||||
</draw_ops>
|
||||
</piece>
|
||||
…
|
||||
<button function="F" state="S" draw_ops="D"/>
|
||||
|
||||
<draw_ops>
|
||||
</draw_ops>
|
||||
</button>
|
||||
…
|
||||
</frame_style>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>The <literal>pieces</literal> are pieces of the window frame. When Metacity draws a window frame, it renders its various pieces always in the same order. The bolded parts are all the possible values of P:</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>the <literal>entire_background</literal>, covering the whole frame</para></listitem>
|
||||
|
||||
<listitem><para>the <literal>titlebar</literal>, covering the entire background of the titlebar</para></listitem>
|
||||
<listitem><para>the <literal>titlebar_middle</literal>, the part of the titlebar that doesn't touch its edges</para></listitem>
|
||||
<listitem><para>the <literal>left_titlebar_edge</literal>, <literal>right_titlebar_edge</literal>, <literal>top_titlebar_edge</literal>, and <literal>bottom_titlebar_edge</literal></para></listitem>
|
||||
|
||||
<listitem><para>the <literal>title</literal>, just exactly that area which is covered by the text on the titlebar</para></listitem>
|
||||
<listitem><para>the <literal>left_edge</literal>, <literal>right_edge</literal>, and <literal>bottom_edge</literal> of the frame (yes, there is no top_edge: it's identical to top_titlebar_edge, isn't it?)</para></listitem>
|
||||
<listitem><para>the <literal>overlay</literal>, which covers everything– the same as entire_background, but done last instead of first.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para><emphasis>What</emphasis> Metacity draws in these pieces is decided by the theme. If a <literal>frame_style</literal> or its parents don't specify a particular piece, nothing will be drawn for that piece. You have two ways to specify what to draw: one is that the <literal>piece</literal> tag can have a <literal>draw_ops</literal> tag inside it which lists a sequence of drawing operations in Metacity's custom format. <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=107012">You might ask why we don't use SVG</ulink>; one answer is that SVG support wasn't very strong when this format was designed, and another answer is that these days you can use SVG all you like; just include it as an image and Metacity will know what to do.</para>
|
||||
|
||||
<para>An alternative to including a draw_ops tag inside a piece tag is to add a draw_ops attribute to the piece tag. Then you can add a draw_ops tag at top level (inside the metacity_theme tag) with a name attribute, and Metacity will use that. This is useful if you use similar draw_ops over and over.</para>
|
||||
<para>I'm not going to document draw_ops at present, because this is already very long. I will write it up later and link it from here.</para>
|
||||
<para>The <literal>button</literal> tag tells Metacity how, but not where, to draw buttons. Buttons are drawn after all the pieces are finished, and the way to draw them is also given using draw_ops. You ought to provide buttons for all the possible kinds of button; if you don't give one it won't be drawn, which is unfortunate for the user who wants to use it:</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para><literal>left_left_background</literal>, <literal>left_middle_background</literal>, and <literal>left_right_background</literal> don't represent buttons as such, but the background behind them, assuming there can be at most three buttons on the left. These days there can be more, so the extra ones also use left_middle_background.</para></listitem>
|
||||
|
||||
<listitem><para><literal>right_left_background</literal>, <literal>right_middle_background</literal>, and <literal>right_right_background</literal> similarly.</para></listitem>
|
||||
<listitem><para><literal>close</literal>, <literal>minimize</literal>, <literal>maximize</literal> are the obvious original three buttons.</para></listitem>
|
||||
<listitem><para><literal>menu</literal> is the menu button you can click to get a list of actions you can perform on the window.</para></listitem>
|
||||
|
||||
<listitem><para><literal>shade</literal>, <literal>above</literal>, <literal>stick</literal> are similar to the original buttons but only allowed in version 2</para></listitem>
|
||||
<listitem><para><literal>unshade</literal>, <literal>unabove</literal>, <literal>unstick</literal> are the toggled versions of these buttons. Again, version 2 only.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>The reason there are toggled versions of shade, above, and stick, and not maximize, is that by the time you get this far you've probably already decided whether you're drawing a maximised window. So if you <emphasis>are</emphasis> drawing a maximised window, you can make the button called "maximize" look how you want the restore button to be; otherwise, make it look like you want the maximise button to be.</para>
|
||||
<para>For each button tag you should also set a "state" attribute; this time the state is either <literal>normal</literal> (the way you see it most of the time), <literal>pressed</literal>, or <literal>prelight</literal> (this makes the buttons subtly light up when you hover over them). You only really need "normal", but the others are good to have too.</para>
|
||||
|
||||
<para>The "geometry" attribute of a <literal>frame_style</literal> tag is the name of a…</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Geometry</title>
|
||||
|
||||
<para>The <literal>geometry</literal> tag defines the sizes of things around the window. It is important, but not easy to explain, and again this file has gone on too long. I'll write it up later.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Other things which lie around a file</title>
|
||||
|
||||
<para>The most important other thing in a theme file is the metadata held in the <literal>info</literal> tag. This contains a set of tags each of which contains some text explaining something about the theme itself, in a sort of <ulink url="http://en.wikipedia.org/wiki/Dublin_Core">Dublin Core</ulink> sort of way. (Next time around, we should probably use the actual Dublin Core.) The tags are <literal>name</literal>, <literal>author</literal>, <literal>copyright</literal>, <literal>date</literal>, and <literal>description</literal>.</para>
|
||||
|
||||
<para>Version 1 of the format had a <literal>menu_icon</literal> tag at top level, which let themes specify the icons beside options in the menu you get from the menu icon. This has become redundant; the icons are taken from the icon theme! The tag can still be used in all formats, but does nothing and is deprecated.</para>
|
||||
<para>Version 2 of the format has a <literal>fallback</literal> tag at top level, which let the theme specify what icon a window should be considered to have if it doesn't provide an icon of its own. This should also be taken from the icon theme, <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=524343">if anyone fancies fixing it</ulink>, and the tag should also then be deprecated. It shouldn't be hard.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>When you're working on a theme</title>
|
||||
|
||||
<para>When you're editing a theme, you can view it without using it on the whole desktop using
|
||||
<command>metacity-theme-viewer YourThemeName</command></para>
|
||||
<para>and view it on the whole desktop using
|
||||
<command>gconftool -<!-- x -->-type=string -<!-- x -->-set /apps/metacity/general/theme YourThemeName</command></para>
|
||||
|
||||
<para>Whenever you change the selected theme in GConf, Metacity will load the newly-chosen theme. This is how control-center does it. But when you change a theme, as you're working on it, you might want to ask Metacity to reload the theme which is currently used on the whole desktop to reflect your changes. You can do this using the little-known <command>metacity-message</command> program, with the command <literal>metacity-message reload-theme</literal>. This works by sending the ClientMessage <literal>_METACITY_RELOAD_THEME_MESSAGE</literal> to the root window, in case you're interested.</para>
|
||||
|
||||
<para>Once you're done with your theme, consider submitting it to <ulink url="http://art.gnome.org/themes/metacity/">the art.gnome.org site</ulink>, or <ulink url="http://www.gnome-look.org/index.php?xcontentmode=101">the gnome-look site</ulink>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>The future</title>
|
||||
|
||||
<para>Please feel free to link to this so people don't have to keep asking the basic questions and can start asking the deeper ones. One of the important deeper ones is: where should we go in the future? Since this format is becoming something of a de facto standard between window managers, should we set up some kind of freedesktop.org standards discussion? Would it be useful to spin off Metacity's theme parsing code into a separate, LGPL-licensed library so that other applications could use it more easily?</para>
|
||||
<para>What would a version 3 of this format look like? Could we simplify the window / frame_style_set system? (I can imagine abolishing both, and being able to write <literal><frame_style for="normal+unfocused+maximized">…</literal> and having Metacity assume it applied to all resize permissions and shadednesses.) Maybe we should try to do everything with SVG we can? Getting more wild and handwavey, is it worth keeping XML-like? Maybe if other window managers were dealing with the files, .ini-style files would be more universally useful? Or perhaps not. And then of course we need a decent graphical editor for it. I have a few ideas, but if anyone fancies jumping in...</para>
|
||||
</chapter>
|
||||
|
||||
</book>
|
||||
|
||||
|
@@ -1,24 +0,0 @@
|
||||
### This part of Makefile.am can be customized by you.
|
||||
|
||||
# gnome-doc-utils standard variables:
|
||||
include $(top_srcdir)/gnome-doc-utils.make
|
||||
dist-hook: doc-dist-hook
|
||||
|
||||
# The name of the directory in /usr/share/gnome/help/,
|
||||
# and the name of the main .xml file:
|
||||
DOC_MODULE = creating-metacity-themes
|
||||
|
||||
# The names of any files included via entity declarations.
|
||||
DOC_ENTITIES =
|
||||
|
||||
# The names of any files included by xincluded (preferred):
|
||||
DOC_INCLUDES =
|
||||
|
||||
# The names of any pictures:
|
||||
DOC_FIGURES =
|
||||
|
||||
# The names of any locales for which documentation translations exist:
|
||||
DOC_LINGUAS =
|
||||
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
man_MANS = metacity.1 metacity-theme-viewer.1 \
|
||||
metacity-window-demo.1 metacity-message.1
|
||||
man_MANS = mutter.1 mutter-theme-viewer.1 \
|
||||
mutter-window-demo.1 mutter-message.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
@@ -12,7 +12,7 @@
|
||||
.\" > Right I know. any licenses that is DFSG-free, I'm ok with whatever,
|
||||
.\" > since I have contributed that for Debian. so GPL is no problem for me.
|
||||
.\" -----
|
||||
.TH METACITY\-MESSAGE 1 "28 August 2002"
|
||||
.TH MUTTER\-MESSAGE 1 "28 August 2002"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@@ -26,24 +26,24 @@
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
METACITY\-MESSAGE \- a command to send a message to Metacity
|
||||
MUTTER\-MESSAGE \- a command to send a message to Mutter
|
||||
.SH SYNOPSIS
|
||||
.B METACITY\-MESSAGE
|
||||
.B MUTTER\-MESSAGE
|
||||
[restart|reload\-theme|enable\-keybindings|disable\-keybindings]
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly the
|
||||
.B metacity\-message\fP.
|
||||
.B mutter\-message\fP.
|
||||
This manual page was written for the Debian distribution
|
||||
because the original program does not have a manual page.
|
||||
.PP
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBmetacity\-message\fP send a specified message to \fBmetacity\fP(1).
|
||||
\fBmutter\-message\fP send a specified message to \fBmutter\fP(1).
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B restart
|
||||
Restart \fBmetacity\fP(1) which is running.
|
||||
Restart \fBmutter\fP(1) which is running.
|
||||
.TP
|
||||
.B reload-theme
|
||||
Reload a theme which is specified on gconf database.
|
||||
@@ -54,7 +54,7 @@ Enable all of keybindings which is specified on gconf database.
|
||||
.B disable-keybindings
|
||||
Disable all of keybindings which is specified on gconf database.
|
||||
.SH SEE ALSO
|
||||
.BR metacity (1)
|
||||
.BR mutter (1)
|
||||
.SH AUTHOR
|
||||
This manual page was written by Akira TAGOH <tagoh@debian.org>,
|
||||
for the Debian GNU/Linux system (but may be used by others).
|
@@ -3,21 +3,21 @@
|
||||
.\"
|
||||
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||
.\"
|
||||
.TH METACITY-THEME-VIEWER 1 "1 June 2004"
|
||||
.TH MUTTER-THEME-VIEWER 1 "1 June 2004"
|
||||
.SH NAME
|
||||
metacity-theme-viewer \- view metacity themes
|
||||
mutter-theme-viewer \- view mutter themes
|
||||
.SH SYNOPSIS
|
||||
.B metacity-theme-viewer
|
||||
.B mutter-theme-viewer
|
||||
[
|
||||
.I THEMENAME
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.\" Putting a newline after each sentence can generate better output.
|
||||
.B metacity-theme-viewer
|
||||
allows you to preview any installed Metacity theme.
|
||||
.B mutter-theme-viewer
|
||||
allows you to preview any installed Mutter theme.
|
||||
.PP
|
||||
When designing a new Metacity theme, you can use
|
||||
.B metacity-theme-viewer
|
||||
When designing a new Mutter theme, you can use
|
||||
.B mutter-theme-viewer
|
||||
to measure the performance of a window frame option, and to preview
|
||||
the option.
|
||||
.SH OPTIONS
|
||||
@@ -32,12 +32,12 @@ It is case-sensitive.
|
||||
.I /usr/share/themes
|
||||
system themes directory
|
||||
.TP
|
||||
.I /usr/share/themes/*/metacity-1/metacity-theme-1.xml
|
||||
.I /usr/share/themes/*/mutter-1/mutter-theme-1.xml
|
||||
theme specification file
|
||||
.SH AUTHOR
|
||||
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
|
||||
the Debian GNU/Linux system (but may be used by others).
|
||||
.SH "SEE ALSO"
|
||||
.\" Always quote multiple words for .SH
|
||||
.BR metacity (1),
|
||||
.BR metacity-window-demo (1).
|
||||
.BR mutter (1),
|
||||
.BR mutter-window-demo (1).
|
@@ -3,11 +3,11 @@
|
||||
.\"
|
||||
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||
.\"
|
||||
.TH METACITY-WINDOW-DEMO 1 "1 June 2004"
|
||||
.TH MUTTER-WINDOW-DEMO 1 "1 June 2004"
|
||||
.SH NAME
|
||||
metacity-window-demo \- demo of window features
|
||||
mutter-window-demo \- demo of window features
|
||||
.SH SYNOPSIS
|
||||
.B metacity-window-demo
|
||||
.B mutter-window-demo
|
||||
.SH DESCRIPTION
|
||||
.\" Putting a newline after each sentence can generate better output.
|
||||
This program demonstrates various kinds of windows that window
|
||||
@@ -21,5 +21,5 @@ the Debian GNU/Linux system (but may be used by others).
|
||||
.SH "SEE ALSO"
|
||||
.\" Always quote multiple words for .SH
|
||||
.BR x-window-manager (1),
|
||||
.BR metacity (1),
|
||||
.BR metacity-theme-viewer (1).
|
||||
.BR mutter (1),
|
||||
.BR mutter-theme-viewer (1).
|
@@ -2,7 +2,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH METACITY 1 "11 February 2006"
|
||||
.TH MUTTER 1 "11 February 2006"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@@ -16,25 +16,25 @@
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
METACITY \- minimal GTK2 Window Manager
|
||||
MUTTER \- Clutter based compositing GTK2 Window Manager
|
||||
.SH SYNOPSIS
|
||||
.B metacity
|
||||
.B mutter
|
||||
[\-\-display=\fIDISPLAY\fP] [\-\-replace] [\-\-sm\-client\-id=\fIID\fP] [\-\-sm\-disable] [\-\-sm\-save\-file=\fIFILENAME\fP] [\-\-version] [\-\-help]
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly
|
||||
.B metacity\fP.
|
||||
.B mutter\fP.
|
||||
.PP
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBmetacity\fP is a minimal X window manager aimed at nontechnical users and is designed to integrate well with the GNOME desktop. \fBmetacity\fP lacks some features that may be expected by traditional UNIX or other technical users; these users may want to investigate other available window managers for use with GNOME or standalone.
|
||||
\fBmutter\fP is a minimal X window manager aimed at nontechnical users and is designed to integrate well with the GNOME desktop. \fBmutter\fP lacks some features that may be expected by traditional UNIX or other technical users; these users may want to investigate other available window managers for use with GNOME or standalone.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-\-display=DISPLAY
|
||||
Connect to X display \fIDISPLAY\fP.
|
||||
.TP
|
||||
.B \-\-replace
|
||||
a window manager which is running is replaced by \fBmetacity\fP. Users are encouraged to change the GNOME window manager by running the new WM with the --replace or -replace option, and subsequently saving the session.
|
||||
a window manager which is running is replaced by \fBmutter\fP. Users are encouraged to change the GNOME window manager by running the new WM with the --replace or -replace option, and subsequently saving the session.
|
||||
.TP
|
||||
.B \-\-sm\-client\-id=ID
|
||||
Specify a session management \fIID\fP.
|
||||
@@ -51,10 +51,10 @@ Print the version number.
|
||||
.B \-?, \-\-help
|
||||
Show summary of options.
|
||||
.SH CONFIGURATION
|
||||
\fBmetacity\fP configuration can be found under \fIPreferences\fP->\fIWindows\fP and \fIPreferences\fP->\fIKeyboard Shortcuts\fP on the menu-panel. Advanced configuration can be achieved directly through gconf editing (gconf-editor or gconftool-2).
|
||||
\fBmutter\fP configuration can be found under \fIPreferences\fP->\fIWindows\fP and \fIPreferences\fP->\fIKeyboard Shortcuts\fP on the menu-panel. Advanced configuration can be achieved directly through gconf editing (gconf-editor or gconftool-2).
|
||||
.SH SEE ALSO
|
||||
.BR metacity-message (1)
|
||||
.BR mutter-message (1)
|
||||
.SH AUTHOR
|
||||
The original manual page was written by Thom May <thom@debian.org>. It was updated by Akira TAGOH <tagoh@debian.org>
|
||||
for the Debian GNU/Linux system (with permission to use by others), and then updated by Luke Morton and Philip O'Brien
|
||||
for inclusion in metacity.
|
||||
for inclusion in mutter.
|
@@ -1,273 +0,0 @@
|
||||
<!--
|
||||
DTD for Metacity themes, as of Metacity 2.4.1
|
||||
Author: Ross Burton <ross@burtonini.com>
|
||||
Copyright (C) 2002 Ross Burton
|
||||
Licensed under the GPL, version 2
|
||||
-->
|
||||
|
||||
<!-- Top-level element -->
|
||||
<!ELEMENT metacity_theme (info,(window|frame_style_set|frame_style|frame_geometry|constant|draw_ops|menu_icon)+)>
|
||||
|
||||
<!-- Theme metadata -->
|
||||
<!ELEMENT info (name?|author?|copyright?|date?|description?)*>
|
||||
<!ELEMENT name (#PCDATA)>
|
||||
<!ELEMENT author (#PCDATA)>
|
||||
<!ELEMENT copyright (#PCDATA)>
|
||||
<!ELEMENT date (#PCDATA)>
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
|
||||
<!ENTITY % xyrequired "
|
||||
x CDATA #REQUIRED
|
||||
y CDATA #REQUIRED
|
||||
">
|
||||
|
||||
<!ENTITY % xyimplied "
|
||||
x CDATA #IMPLIED
|
||||
y CDATA #IMPLIED
|
||||
">
|
||||
|
||||
<!ENTITY % widthheightrequired "
|
||||
width CDATA #REQUIRED
|
||||
height CDATA #REQUIRED
|
||||
">
|
||||
|
||||
<!ENTITY % widthheightimplied "
|
||||
width CDATA #IMPLIED
|
||||
height CDATA #IMPLIED
|
||||
">
|
||||
|
||||
<!ENTITY % boolean "(true|false)">
|
||||
|
||||
<!ENTITY % piece_positions "
|
||||
(entire_background|titlebar|titlebar_middle|left_titlebar_edge|right_titlebar_edge|top_titlebar_edge|bottom_titlebar_edge|title|left_edge|right_edge|bottom_edge|overlay)
|
||||
">
|
||||
|
||||
<!ENTITY % gtk-state "
|
||||
state (normal|prelight|active|selected|insensitive) #REQUIRED
|
||||
">
|
||||
|
||||
<!ENTITY % gtk-shadow "
|
||||
shadow (none|in|out|etched_in|etched_out) #REQUIRED
|
||||
">
|
||||
|
||||
|
||||
<!-- The actual theme -->
|
||||
|
||||
<!ELEMENT window EMPTY>
|
||||
<!ATTLIST window
|
||||
type (normal|dialog|modal_dialog|menu|utility|border) #REQUIRED
|
||||
style_set CDATA #REQUIRED
|
||||
>
|
||||
|
||||
|
||||
<!ELEMENT frame_style_set (frame+)>
|
||||
<!ATTLIST frame_style_set
|
||||
name CDATA #REQUIRED
|
||||
parent CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT frame EMPTY>
|
||||
<!ATTLIST frame
|
||||
focus (yes|no) #REQUIRED
|
||||
state (normal|maximized|shaded|maximized_and_shaded) #REQUIRED
|
||||
resize (both|horizontal|vertical|none) #IMPLIED
|
||||
style CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT frame_style (piece|button)*>
|
||||
<!ATTLIST frame_style
|
||||
name CDATA #REQUIRED
|
||||
geometry CDATA #REQUIRED
|
||||
parent CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT piece (draw_ops?)>
|
||||
<!ATTLIST piece
|
||||
position %piece_positions; #REQUIRED
|
||||
draw_ops CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT button (draw_ops?)>
|
||||
<!ATTLIST button
|
||||
function (menu|minimize|maximize|close|left_left_background|left_middle_background|left_right_background|right_left_background|right_middle_background|right_right_background) #REQUIRED
|
||||
state (normal|prelight|pressed) #REQUIRED
|
||||
draw_ops CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT frame_geometry (border|(aspect_ratio|distance))+>
|
||||
<!ATTLIST frame_geometry
|
||||
name CDATA #REQUIRED
|
||||
parent CDATA #IMPLIED
|
||||
title_scale (xx-small|x-small|small|medium|large|x-large|xx-large) #IMPLIED
|
||||
has_title (true|false) 'true'
|
||||
rounded_top_left %boolean; #IMPLIED
|
||||
rounded_top_right %boolean; #IMPLIED
|
||||
rounded_bottom_left %boolean; #IMPLIED
|
||||
rounded_bottom_right %boolean; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT distance EMPTY>
|
||||
<!ATTLIST distance
|
||||
name (left_width|right_width|bottom_height|title_vertical_pad|right_titlebar_edge|left_titlebar_edge|button_width|button_height) #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT border EMPTY>
|
||||
<!ATTLIST border
|
||||
name CDATA #REQUIRED
|
||||
top CDATA #REQUIRED
|
||||
bottom CDATA #REQUIRED
|
||||
left CDATA #REQUIRED
|
||||
right CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT aspect_ratio EMPTY>
|
||||
<!ATTLIST aspect_ratio
|
||||
name CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT draw_ops (line|rectangle|arc|tint|gradient|image|gtk_arrow|gtk_box|gtk_vline|icon|title|clip|include|tile)*>
|
||||
<!-- not sure about this.. maybe it should be removed. see #3478 in theme-parser.c -->
|
||||
<!ATTLIST draw_ops
|
||||
name CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT line EMPTY>
|
||||
<!ATTLIST line
|
||||
color CDATA #REQUIRED
|
||||
x1 CDATA #REQUIRED
|
||||
y1 CDATA #REQUIRED
|
||||
x2 CDATA #REQUIRED
|
||||
y2 CDATA #REQUIRED
|
||||
width CDATA #IMPLIED
|
||||
dash_on_length CDATA #IMPLIED
|
||||
dash_off_length CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT rectangle EMPTY>
|
||||
<!ATTLIST rectangle
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
filled %boolean; 'false'
|
||||
>
|
||||
|
||||
<!ELEMENT arc EMPTY>
|
||||
<!ATTLIST arc
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
start_angle CDATA #REQUIRED
|
||||
extent_angle CDATA #REQUIRED
|
||||
filled %boolean; 'false'
|
||||
>
|
||||
|
||||
<!ELEMENT icon EMPTY>
|
||||
<!ATTLIST icon
|
||||
%xyrequired;
|
||||
width CDATA #REQUIRED
|
||||
height CDATA #REQUIRED
|
||||
alpha CDATA #IMPLIED
|
||||
fill_type (tile|scale) 'scale'
|
||||
>
|
||||
|
||||
<!ELEMENT image EMPTY>
|
||||
<!ATTLIST image
|
||||
filename CDATA #REQUIRED
|
||||
colorize CDATA #IMPLIED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
alpha CDATA #IMPLIED
|
||||
fill_type (tile|scale) 'scale'
|
||||
>
|
||||
|
||||
<!ELEMENT tile EMPTY>
|
||||
<!ATTLIST tile
|
||||
name CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
tile_xoffset CDATA #IMPLIED
|
||||
tile_yoffset CDATA #IMPLIED
|
||||
tile_width CDATA #REQUIRED
|
||||
tile_height CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT clip EMPTY>
|
||||
<!ATTLIST clip
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
>
|
||||
|
||||
<!ELEMENT title EMPTY>
|
||||
<!ATTLIST title
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
>
|
||||
|
||||
<!ELEMENT tint EMPTY>
|
||||
<!ATTLIST tint
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
alpha CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT gtk_box EMPTY>
|
||||
<!ATTLIST gtk_box
|
||||
%gtk-state;
|
||||
%gtk-shadow;
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
>
|
||||
|
||||
<!ELEMENT gtk_arrow EMPTY>
|
||||
<!ATTLIST gtk_arrow
|
||||
%gtk-state;
|
||||
%gtk-shadow;
|
||||
arrow (up|down|left|right) #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
filed CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT gtk_vline EMPTY>
|
||||
<!ATTLIST gtk_vline
|
||||
%gtk-state;
|
||||
x CDATA #REQUIRED
|
||||
y1 CDATA #REQUIRED
|
||||
y2 CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT gradient (color)+>
|
||||
<!ATTLIST gradient
|
||||
type (vertical|horizontal|diagonal) #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
alpha CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT color EMPTY>
|
||||
<!ATTLIST color
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT include EMPTY>
|
||||
<!ATTLIST include
|
||||
name CDATA #REQUIRED
|
||||
%xyimplied;
|
||||
%widthheightimplied;
|
||||
>
|
||||
|
||||
<!ELEMENT constant EMPTY>
|
||||
<!ATTLIST constant
|
||||
name CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT menu_icon (draw_ops?)>
|
||||
<!ATTLIST menu_icon
|
||||
function (close|maximize|minimize|unmaximize) #REQUIRED
|
||||
%gtk-state;
|
||||
draw_ops CDATA #IMPLIED
|
||||
>
|
@@ -4,6 +4,7 @@ of the theme format, and a given theme can support more than one format.
|
||||
Version 1: THEMEDIR/metacity-1/metacity-theme-1.xml
|
||||
(original metacity format)
|
||||
Version 2: THEMEDIR/metacity-1/metacity-theme-2.xml
|
||||
Version 3: THEMEDIR/metacity-1/metacity-theme-3.xml
|
||||
|
||||
The subdirectory name is "metacity-1" in all versions.
|
||||
|
||||
@@ -21,6 +22,71 @@ This document has separate sections for each format version. You may
|
||||
want to read the document in reverse order, since the base features
|
||||
are discussed under version 1.
|
||||
|
||||
New Features in Theme Format Version 3.4
|
||||
========================================
|
||||
|
||||
An additional color type is added to pick up custom colors defined
|
||||
in the GTK+ theme's CSS:
|
||||
|
||||
gtk:custom(name,fallback)
|
||||
|
||||
where <name> refers to a custom color defined with @define-color in
|
||||
the GTK+ theme, and <fallback> provides an alternative color definition
|
||||
in case the color referenced by <name> is not found.
|
||||
|
||||
New Features in Theme Format Version 3.3
|
||||
========================================
|
||||
|
||||
Add two additional button background functions - left_single_background and
|
||||
right_single_background - for button groups with just a single button.
|
||||
|
||||
There are now additional frame states to style left/right tiled windows
|
||||
differently ("tiled_left", "tiled_right", "tiled_left_and_shaded",
|
||||
"tiled_right_and_shaded").
|
||||
|
||||
New Features in Theme Format Version 3.2
|
||||
========================================
|
||||
|
||||
A new window type 'attached' is added for modal dialogs which are
|
||||
attached to their parent window. (When the attach_modal_dialogs preference
|
||||
is turned on.) If no style is defined for the 'attached' window type,
|
||||
the 'border' window type will be used instead.
|
||||
|
||||
New Features in Theme Format Version 3.1
|
||||
========================================
|
||||
|
||||
Additional predefined variables are added for positioning expressions:
|
||||
|
||||
frame_x_center: the X center of the entire frame, with respect to the
|
||||
piece currently being drawn.
|
||||
frame_y_center: the Y center of the entire frame, with respect to the
|
||||
piece currently being drawn.
|
||||
|
||||
The <title/> element now supports an "ellipsize_width" attribute. When
|
||||
specified, this gives a width at which to ellipsize the title. If not
|
||||
specified, the title will simply be clipped to the title area.
|
||||
|
||||
New Features in Theme Format Version 3
|
||||
======================================
|
||||
|
||||
Format version 3 has exactly one new feature; any element in the file
|
||||
can now have a version attribute:
|
||||
|
||||
version="[<|<=|=>|>] MAJOR.MINOR"
|
||||
|
||||
(< and > should be to be entity escaped as < and >). If this
|
||||
version check is not met, then the element and its children will be
|
||||
ignored. This allows having alternate sections of the theme file for
|
||||
older and newer version of the Metacity theme format.
|
||||
|
||||
When placed on the toplevel <metacity_theme> element, an unsatisfied
|
||||
version check will not just cause the contents of the file to be
|
||||
ignored, it will also cause the lookup of a theme file to proceed on
|
||||
and look for an older format 2 or format 1 file. This allows making a
|
||||
metacity-theme-3.xml file that is only used the format version 3.2 or
|
||||
newer is supported, and using metacity-theme-1.xml for older window
|
||||
managers.
|
||||
|
||||
New Features in Theme Format Version 2
|
||||
======================================
|
||||
|
||||
|
710
metacity.doap
710
metacity.doap
@@ -1,710 +0,0 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<Project
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns="http://usefulinc.com/ns/doap#"
|
||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||
xmlns:admin="http://webns.net/mvcb/">
|
||||
|
||||
<name>The Metacity Window Manager</name>
|
||||
<shortname>Metacity</shortname>
|
||||
|
||||
<!-- It's a blog. Metacity has no homepage. -->
|
||||
<homepage rdf:resource="http://blogs.gnome.org/metacity/" />
|
||||
|
||||
<!-- The date when the source control was initialised. -->
|
||||
<created>2001-05-30</created>
|
||||
|
||||
<shortdesc xml:lang="en">
|
||||
Metacity is a simple compositing window manager that integrates nicely with GNOME 2.
|
||||
</shortdesc>
|
||||
<description xml:lang="en">
|
||||
A window manager for GNOME, with a focus on simplicity and usability
|
||||
rather than novelties or gimmicks. It uses GTK+ 2 for drawing window frames,
|
||||
so that it inherits colours, fonts, and so on from the GTK+ theme. Its author
|
||||
has characterised it as a "boring window manager for the adult in you.
|
||||
Many window managers are like Marshmallow Froot Loops; Metacity is like Cheerios."
|
||||
</description>
|
||||
|
||||
<!-- I haven't found anything appropriate; I made this up. -->
|
||||
<category>window-manager</category>
|
||||
|
||||
<wiki rdf:resource="http://live.gnome.org/Metacity" />
|
||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=metacity" />
|
||||
<screenshots rdf:resource="http://commons.wikimedia.org/wiki/Image:Metacity-screenshot.png" />
|
||||
|
||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/metacity-devel-list" />
|
||||
|
||||
<programming-language>C</programming-language>
|
||||
<license rdf:resource="http://usefulinc.com/doap/licenses/gpl" />
|
||||
<download-page rdf:resource="http://download.gnome.org/sources/metacity/" />
|
||||
|
||||
<repository>
|
||||
<SVNRepository>
|
||||
<location rdf:resource="http://svn.gnome.org/svn/metacity" />
|
||||
<browse rdf:resource="http://svn.gnome.org/viewvc/metacity/" />
|
||||
</SVNRepository>
|
||||
</repository>
|
||||
|
||||
<author>
|
||||
<foaf:Person>
|
||||
<foaf:name>Havoc Pennington</foaf:name>
|
||||
</foaf:Person>
|
||||
</author>
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Elijah Newren</foaf:name>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Thomas Thurman</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:tthurman@gnome.org"/>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
|
||||
<release><Version>
|
||||
<name>2.25.1 release</name>
|
||||
<created>2008-09-01</created>
|
||||
<branch></branch>
|
||||
<revision>2.25.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.25.0 release</name>
|
||||
<created>2008-08-18</created>
|
||||
<branch></branch>
|
||||
<revision>2.25.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.89 release</name>
|
||||
<created>2008-08-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.89</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.89.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.89.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.55 release</name>
|
||||
<created>2008-07-14</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.55</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.55.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.55.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.34 release</name>
|
||||
<created>2008-06-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.34 release</name>
|
||||
<created>2008-06-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.34 release</name>
|
||||
<created>2008-06-02</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.21 release</name>
|
||||
<created>2008-05-26</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.13 release</name>
|
||||
<created>2008-04-27</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.8 release</name>
|
||||
<created>2008-04-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.5 release</name>
|
||||
<created>2008-04-06</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.3 release</name>
|
||||
<created>2008-03-21</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.2 release</name>
|
||||
<created>2008-03-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.1 release</name>
|
||||
<created>2008-03-06</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.0 release</name>
|
||||
<created>2008-02-26</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.13 release</name>
|
||||
<created>2008-02-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.8 release</name>
|
||||
<created>2008-02-03</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.5 release</name>
|
||||
<created>2007-12-19</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.3 release</name>
|
||||
<created>2007-12-14</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.2 release</name>
|
||||
<created>2007-11-17</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.1 release</name>
|
||||
<created>2007-11-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.20.0 release</name>
|
||||
<created>2007-09-15</created>
|
||||
<branch></branch>
|
||||
<revision>2.20.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.20/2.20.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.20/2.20.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.55 release</name>
|
||||
<created>2007-08-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.55</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.55.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.55.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.34 release</name>
|
||||
<created>2007-07-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.21 release</name>
|
||||
<created>2007-06-18</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.13 release</name>
|
||||
<created>2007-06-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.8 release</name>
|
||||
<created>2007-06-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.5 release</name>
|
||||
<created>2007-04-23</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.3 release</name>
|
||||
<created>2007-04-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.2 release</name>
|
||||
<created>2007-04-09</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.1 release</name>
|
||||
<created>2007-04-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.3 release</name>
|
||||
<created>2006-12-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.2 release</name>
|
||||
<created>2006-11-06</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.1 release</name>
|
||||
<created>2006-10-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.0 release</name>
|
||||
<created>2006-10-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.16.2 release</name>
|
||||
<created>2006-09-18</created>
|
||||
<branch></branch>
|
||||
<revision>2.16.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.16.1 release</name>
|
||||
<created>2006-09-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.16.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.16.0 release</name>
|
||||
<created>2006-09-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.16.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.34 release</name>
|
||||
<created>2006-08-21</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.21 release</name>
|
||||
<created>2006-08-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.13 release</name>
|
||||
<created>2006-07-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.8 release</name>
|
||||
<created>2006-07-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.5 release</name>
|
||||
<created>2006-06-12</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.3 release</name>
|
||||
<created>2006-05-15</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.2 release</name>
|
||||
<created>2006-04-25</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.1 release</name>
|
||||
<created>2006-04-25</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.0 release</name>
|
||||
<created>2006-04-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.89 release</name>
|
||||
<created>2006-02-13</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.89</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.89.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.89.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.55 release</name>
|
||||
<created>2006-01-30</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.55</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.55.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.55.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.34 release</name>
|
||||
<created>2006-01-20</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.21 release</name>
|
||||
<created>2006-01-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.13 release</name>
|
||||
<created>2006-01-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.8 release</name>
|
||||
<created>2006-01-02</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.5 release</name>
|
||||
<created>2005-12-12</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.3 release</name>
|
||||
<created>2005-11-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.2 release</name>
|
||||
<created>2005-11-19</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.1 release</name>
|
||||
<created>2005-11-14</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.0 release</name>
|
||||
<created>2005-10-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.12.1 release</name>
|
||||
<created>2005-10-03</created>
|
||||
<branch></branch>
|
||||
<revision>2.12.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.12.0 release</name>
|
||||
<created>2005-09-05</created>
|
||||
<branch></branch>
|
||||
<revision>2.12.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.3 release</name>
|
||||
<created>2005-08-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.2 release</name>
|
||||
<created>2005-08-08</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.1 release</name>
|
||||
<created>2005-07-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.0 release</name>
|
||||
<created>2005-07-12</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.10.2 release</name>
|
||||
<created>2005-06-27</created>
|
||||
<branch></branch>
|
||||
<revision>2.10.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.10.1 release</name>
|
||||
<created>2005-04-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.10.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.10.0 release</name>
|
||||
<created>2005-03-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.10.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.5 release</name>
|
||||
<created>2004-09-13</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.5 release</name>
|
||||
<created>2004-09-13</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.4 release</name>
|
||||
<created>2004-08-29</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.4</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.4.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.4.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.3 release</name>
|
||||
<created>2004-08-15</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<!-- earlier ones not yet documented, and will have to be added by hand -->
|
||||
|
||||
</Project>
|
42
mutter.doap
Normal file
42
mutter.doap
Normal file
@@ -0,0 +1,42 @@
|
||||
<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
|
||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||
xmlns:gnome="http://api.gnome.org/doap-extensions#"
|
||||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
|
||||
<name xml:lang="en">mutter</name>
|
||||
<shortdesc xml:lang="en">Window and compositing manager based on Clutter</shortdesc>
|
||||
<description>Mutter is a window and compositing manager that displays and
|
||||
manages your desktop via OpenGL. Mutter combines a sophisticated display engine
|
||||
using the Clutter toolkit with solid window-management logic inherited from the
|
||||
Metacity window manager.
|
||||
|
||||
While Mutter can be used stand-alone, it is primarily intended to be used as
|
||||
the display core of a larger system such as GNOME Shell. For this reason,
|
||||
Mutter is very extensible via plugins, which are used both to add fancy visual
|
||||
effects and to rework the window management behaviors to meet the needs of the
|
||||
environment.</description>
|
||||
<!--
|
||||
<homepage rdf:resource="http://www.gnome.org/" />
|
||||
-->
|
||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
||||
<download-page rdf:resource="http://download.gnome.org/sources/mutter/" />
|
||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" />
|
||||
|
||||
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Tomas Frydrych</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:tf@linux.intel.com" />
|
||||
<gnome:userid>tomasf</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Owen Taylor</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:otaylor@redhat.com" />
|
||||
<gnome:userid>otaylor</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
</Project>
|
219
po/ChangeLog
219
po/ChangeLog
@@ -1,3 +1,214 @@
|
||||
2009-04-05 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2009-03-30 Baris Cicek <baris@teamforce.name.tr>
|
||||
|
||||
* tr.po: Updated Turkish translation.
|
||||
|
||||
2009-03-28 Simos Xenitellis <simos@gnome.org>
|
||||
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2009-03-27 Simos Xenitellis <simos@gnome.org>
|
||||
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2009-03-21 Goran Rakic <grakic@devbase.net>
|
||||
|
||||
* sr.po, sr@latin.po: Updated Serbian translation by Miloš Popović.
|
||||
|
||||
2009-03-19 Tomasz Dominikowski <tdominikowski@aviary.pl>
|
||||
|
||||
* pl.po: Updated Polish translation
|
||||
|
||||
2009-03-19 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2009-03-18 Ignacio Casal Quinteiro <icq@gnome.org>
|
||||
|
||||
* gl.po: Updated Galician translation by Suso Baleato.
|
||||
|
||||
2009-03-18 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
* el.po: Updated Greek Translation by Fotis Tsamis.
|
||||
|
||||
2009-03-18 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic translation.
|
||||
|
||||
2009-03-17 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2009-03-16 Amitakhya Phukan <amitakhya@svn.gnome.org>
|
||||
|
||||
* as.po: Updated Assamese translations.
|
||||
|
||||
2009-03-15 Rajesh Ranjan <rajeshkajha@yahoo.com>
|
||||
|
||||
* mai.po: added Maithili translation.
|
||||
* LINGUAS: Added Maithili (mai) to the list of Languages.
|
||||
|
||||
2009-03-15 Ankitkumar Patel <ankit@redhat.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translations.
|
||||
|
||||
2009-03-14 Gintautas Miliauskas <gintautas@miliauskas.lt>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2009-03-14 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
|
||||
|
||||
* ru.po: Updated Russian translation by Yuriy Penkin.
|
||||
|
||||
2009-03-14 Sandeep Shedmake <sshedmak@redhat.com>
|
||||
|
||||
* mr.po: Updated Marathi Translations.
|
||||
|
||||
2009-03-14 Rajesh Ranjan <rranjan@redhat.com>
|
||||
|
||||
* hi.po: Updated Hindi Translation.
|
||||
|
||||
2009-03-13 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
* el.po: Updated Greek Translation by Jennie Petoumenou.
|
||||
|
||||
2009-03-13 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Mattias Põldaru
|
||||
|
||||
2009-03-12 Manoj Kumar Giri <mgiri@redhat.com>
|
||||
|
||||
* or.po: Updated Oriya Translation.
|
||||
|
||||
2009-03-11 Krishnababu K <kkrothap@redhat.com>
|
||||
|
||||
* te.po: Updated Telugu Translation.
|
||||
* LINGUAS: Added Telugu [te] language.
|
||||
|
||||
2009-03-10 Runa Bhattacharjee <runab@redhat.com>
|
||||
|
||||
* bn_IN.po: Updated partial Bengali India Translation
|
||||
|
||||
2009-03-08 Petr Kovar <pknbe@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2009-03-07 Mark Krapivner <mark125@gmail.com>
|
||||
|
||||
* he.po: Updated Hebrew translation.
|
||||
|
||||
2009-03-06 Milo Casagrande <milo@ubuntu.com>
|
||||
|
||||
* it.po: Updated Italian translation by Luca Ferretti.
|
||||
|
||||
2009-03-04 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* it.po: Updated Italian translation
|
||||
|
||||
2009-03-02 Claude Paroz <claude@2xlibre.net>
|
||||
|
||||
* fr.po: Updated French translation by Frédéric Peters and Claude Paroz.
|
||||
|
||||
2009-03-02 I. Felix <ifelix@redhat.com>
|
||||
|
||||
* ta.po: Tamil Translation updated by Tirumurthi Vasudevan
|
||||
|
||||
2009-02-28 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2009-02-23 Philip Withnall <philip@tecnocode.co.uk>
|
||||
|
||||
* en_GB.po: Updated British English translation.
|
||||
|
||||
2009-02-23 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ca.po: Updated Catalan translation by David Planella.
|
||||
|
||||
2009-02-23 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2009-02-21 Christian Kirbach <Christian.Kirbach@googlemail.com>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2009-02-20 Og Maciel <ogmaciel@gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation by
|
||||
Vladimir Melo.
|
||||
|
||||
2009-02-19 Jani Monoses <jani@ubuntu.com>
|
||||
|
||||
* ro.po: Updated Romanian translation
|
||||
by Adi Roiban <adi@roiban.ro>
|
||||
|
||||
2009-02-19 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2009-02-18 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
|
||||
|
||||
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
|
||||
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
|
||||
|
||||
2009-02-18 Changwoo Ryu <cwryu@debian.org>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2009-02-17 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2009-02-16 Wouter Bolsterlee <wbolster@svn.gnome.org>
|
||||
|
||||
* nl.po: Updated Dutch translation by Wouter Bolsterlee.
|
||||
|
||||
2009-02-15 Kenneth Nielsen <k.nielsen81@gmail.com>
|
||||
|
||||
* da.po: Updated Danish translation by Ask H. Larsen
|
||||
|
||||
2009-02-15 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
|
||||
|
||||
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
|
||||
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
|
||||
|
||||
2009-02-14 Ihar Hrachyshka <booxter@lacinka.org>
|
||||
|
||||
* be@latin.po: Updated Belarusian Latin translation by Ihar Hrachyshka.
|
||||
|
||||
2009-02-13 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2009-02-12 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
|
||||
|
||||
* eu.po: Updated Basque translation.
|
||||
|
||||
2009-02-11 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2009-02-11 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2009-02-10 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ast.po: Updated Asturian translation on behalf of Mikel González.
|
||||
|
||||
2009-02-07 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2009-02-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2009-02-01 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ca.po: Updated Catalan translation by David Planella.
|
||||
@@ -43,7 +254,7 @@
|
||||
|
||||
2009-01-03 甘露(Gan Lu) <rhythm.gan@gmail.com>
|
||||
|
||||
* zh_CN.po: Updated Chinese Simplified translation
|
||||
* zh_CN.po: Updated Chinese Simplified translation
|
||||
|
||||
2009-01-03 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
@@ -199,7 +410,7 @@
|
||||
|
||||
2008-09-12 Goran Rakić <grakic@devbase.net>
|
||||
|
||||
* sr.po, sr@latin.po: Updated Serbian translation (by Miloš Popović).
|
||||
* sr.po, sr@latin.po: Updated Serbian translation (by Miloš Popović).
|
||||
|
||||
2008-09-09 Robert Sedak <robert.sedak@sk.t-com.hr>
|
||||
|
||||
@@ -335,7 +546,7 @@
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2008-06-01 Clytie Siddall <clytie@riverland.net.au>
|
||||
2008-06-01 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
@@ -421,7 +632,7 @@
|
||||
|
||||
2008-03-07 Maxim Dziumanenko <dziumanenko@gmail.com>
|
||||
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
|
||||
2008-03-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
|
@@ -10,6 +10,7 @@ be@latin
|
||||
bg
|
||||
bn
|
||||
bn_IN
|
||||
br
|
||||
bs
|
||||
ca
|
||||
ca@valencia
|
||||
@@ -21,6 +22,7 @@ dz
|
||||
el
|
||||
en_CA
|
||||
en_GB
|
||||
eo
|
||||
es
|
||||
et
|
||||
eu
|
||||
@@ -48,6 +50,7 @@ ku
|
||||
la
|
||||
lt
|
||||
lv
|
||||
mai
|
||||
mg
|
||||
mk
|
||||
ml
|
||||
@@ -55,6 +58,7 @@ mn
|
||||
mr
|
||||
ms
|
||||
nb
|
||||
nds
|
||||
ne
|
||||
nl
|
||||
nn
|
||||
@@ -75,9 +79,11 @@ sr
|
||||
sr@latin
|
||||
sv
|
||||
ta
|
||||
te
|
||||
th
|
||||
tk
|
||||
tr
|
||||
ug
|
||||
uk
|
||||
vi
|
||||
wa
|
||||
|
@@ -1,30 +1,29 @@
|
||||
# List of source files containing translatable strings.
|
||||
# Please keep this file sorted alphabetically.
|
||||
src/50-metacity-desktop-key.xml.in
|
||||
src/50-metacity-key.xml.in
|
||||
src/compositor/compositor.c
|
||||
src/core/all-keybindings.h
|
||||
src/core/bell.c
|
||||
src/core/core.c
|
||||
src/core/delete.c
|
||||
src/core/display.c
|
||||
src/core/errors.c
|
||||
src/core/keybindings.c
|
||||
src/core/main.c
|
||||
src/core/mutter.c
|
||||
src/core/prefs.c
|
||||
src/core/screen.c
|
||||
src/core/schema-bindings.c
|
||||
src/core/session.c
|
||||
src/core/util.c
|
||||
src/core/window.c
|
||||
src/core/window-props.c
|
||||
src/core/xprops.c
|
||||
src/include/all-keybindings.h
|
||||
src/metacity.desktop.in
|
||||
src/metacity.schemas.in.in
|
||||
src/metacity-wm.desktop.in
|
||||
src/tools/metacity-message.c
|
||||
src/mutter.desktop.in
|
||||
src/mutter-wm.desktop.in
|
||||
src/mutter.schemas.in
|
||||
src/tools/mutter-message.c
|
||||
src/ui/frames.c
|
||||
src/ui/menu.c
|
||||
src/ui/metaaccellabel.c
|
||||
src/ui/metacity-dialog.c
|
||||
src/ui/resizepopup.c
|
||||
src/ui/theme.c
|
||||
src/ui/theme-parser.c
|
||||
|
5225
po/be@latin.po
5225
po/be@latin.po
File diff suppressed because it is too large
Load Diff
4727
po/bn_IN.po
4727
po/bn_IN.po
File diff suppressed because it is too large
Load Diff
5629
po/ca@valencia.po
5629
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
5945
po/en_GB.po
5945
po/en_GB.po
File diff suppressed because it is too large
Load Diff
4
po/nn.po
4
po/nn.po
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: nn\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-04-04 13:50+0200\n"
|
||||
"PO-Revision-Date: 2008-04-04 13:59+0200\n"
|
||||
"PO-Revision-Date: 2009-06-16 09:54-0400\n"
|
||||
"Last-Translator: Eskild Hustvedt <eskildh@gnome.org>\n"
|
||||
"Language-Team: Norwegian Nynorsk <i18n-no@lister.ping.uio.no>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -2300,7 +2300,7 @@ msgstr "_Lukk"
|
||||
#: ../src/ui/menu.c:203
|
||||
#, c-format
|
||||
msgid "Workspace %d%n"
|
||||
msgstr "Arbeidsflate %d"
|
||||
msgstr "Arbeidsflate %d%n"
|
||||
|
||||
#: ../src/ui/menu.c:213
|
||||
#, c-format
|
||||
|
2771
po/pt_BR.po
2771
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
5790
po/sr@latin.po
5790
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
2664
po/zh_CN.po
2664
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
3727
po/zh_HK.po
3727
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
4133
po/zh_TW.po
4133
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<KeyListEntries _name="Desktop" wm_name="Metacity" package="metacity">
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/panel_run_dialog" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/panel_main_menu" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/run_command_screenshot" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/run_command_window_screenshot" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/run_command_terminal" />
|
||||
|
||||
</KeyListEntries>
|
||||
|
@@ -1,269 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<KeyListEntries _name="Window Management" wm_name="Metacity" package="metacity">
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/activate_window_menu" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_fullscreen" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_maximized" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/maximize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/unmaximize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_shaded" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/close" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/minimize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/begin_move" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/begin_resize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_on_all_workspaces"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/raise_or_lower" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/raise" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/lower" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/maximize_vertically" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/maximize_horizontally" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_1"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_2"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_3"
|
||||
value="2"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_4"
|
||||
value="3"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_5"
|
||||
value="4"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_6"
|
||||
value="5"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_7"
|
||||
value="6"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_8"
|
||||
value="7"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_9"
|
||||
value="8"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_10"
|
||||
value="9"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_11"
|
||||
value="10"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_12"
|
||||
value="11"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_left"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_right"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_up"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_down"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_windows" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_group" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_panels" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/cycle_windows" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/cycle_group" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/cycle_panels" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/show_desktop" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_1"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_2"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_3"
|
||||
value="2"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_4"
|
||||
value="3"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_5"
|
||||
value="4"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_6"
|
||||
value="5"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_7"
|
||||
value="6"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_8"
|
||||
value="7"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_9"
|
||||
value="8"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_10"
|
||||
value="9"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_11"
|
||||
value="10"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_12"
|
||||
value="11"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_left"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_right"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_up"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_down"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
</KeyListEntries>
|
||||
|
363
src/Makefile.am
363
src/Makefile.am
@@ -1,85 +1,137 @@
|
||||
lib_LTLIBRARIES = libmetacity-private.la
|
||||
# Flag build for parallelism; see https://savannah.gnu.org/patch/?6905
|
||||
.AUTOPARALLEL:
|
||||
|
||||
SUBDIRS=wm-tester tools themes
|
||||
lib_LTLIBRARIES = libmutter.la
|
||||
|
||||
if WITH_CLUTTER
|
||||
SUBDIRS += compositor/mutter/plugins
|
||||
endif
|
||||
SUBDIRS=wm-tester tools compositor/plugins
|
||||
|
||||
INCLUDES=@METACITY_CFLAGS@ -I $(srcdir)/include -I$(srcdir)/compositor -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMETACITY_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMETACITY_PKGDATADIR=\"$(pkgdatadir)\" -DMETACITY_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"metacity\" -DSN_API_NOT_YET_FROZEN=1 -DMETACITY_MAJOR_VERSION=$(METACITY_MAJOR_VERSION) -DMETACITY_MINOR_VERSION=$(METACITY_MINOR_VERSION) -DMETACITY_MICRO_VERSION=$(METACITY_MICRO_VERSION) -DMETACITY_CLUTTER_PLUGIN_API_VERSION=$(METACITY_CLUTTER_PLUGIN_API_VERSION) -DMETACITY_PKGLIBDIR=\"$(pkglibdir)\" -DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\"
|
||||
INCLUDES= \
|
||||
$(MUTTER_CFLAGS) \
|
||||
-I$(srcdir) \
|
||||
-I$(srcdir)/core \
|
||||
-I$(srcdir)/ui \
|
||||
-I$(srcdir)/compositor \
|
||||
-DMUTTER_LIBEXECDIR=\"$(libexecdir)\" \
|
||||
-DHOST_ALIAS=\"@HOST_ALIAS@\" \
|
||||
-DMUTTER_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" \
|
||||
-DMUTTER_PKGDATADIR=\"$(pkgdatadir)\" \
|
||||
-DMUTTER_DATADIR=\"$(datadir)\" \
|
||||
-DG_LOG_DOMAIN=\"mutter\" \
|
||||
-DSN_API_NOT_YET_FROZEN=1 \
|
||||
-DMUTTER_MAJOR_VERSION=$(MUTTER_MAJOR_VERSION) \
|
||||
-DMUTTER_MINOR_VERSION=$(MUTTER_MINOR_VERSION) \
|
||||
-DMUTTER_MICRO_VERSION=$(MUTTER_MICRO_VERSION) \
|
||||
-DMUTTER_PLUGIN_API_VERSION=$(MUTTER_PLUGIN_API_VERSION) \
|
||||
-DMUTTER_PKGLIBDIR=\"$(pkglibdir)\" \
|
||||
-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\" \
|
||||
-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"
|
||||
|
||||
metacity_SOURCES= \
|
||||
mutter_built_sources = \
|
||||
mutter-marshal.h \
|
||||
mutter-marshal.c \
|
||||
mutter-enum-types.h \
|
||||
mutter-enum-types.c
|
||||
|
||||
libmutter_la_SOURCES = \
|
||||
core/async-getprop.c \
|
||||
core/async-getprop.h \
|
||||
core/bell.c \
|
||||
core/bell.h \
|
||||
core/boxes.c \
|
||||
include/boxes.h \
|
||||
core/boxes-private.h \
|
||||
meta/boxes.h \
|
||||
compositor/cogl-utils.c \
|
||||
compositor/cogl-utils.h \
|
||||
compositor/compositor.c \
|
||||
compositor/compositor-private.h \
|
||||
compositor/compositor-xrender.c \
|
||||
compositor/compositor-xrender.h \
|
||||
include/compositor.h \
|
||||
compositor/meta-background-actor.c \
|
||||
compositor/meta-background-actor-private.h \
|
||||
compositor/meta-module.c \
|
||||
compositor/meta-module.h \
|
||||
compositor/meta-plugin.c \
|
||||
compositor/meta-plugin-manager.c \
|
||||
compositor/meta-plugin-manager.h \
|
||||
compositor/meta-shadow-factory.c \
|
||||
compositor/meta-shadow-factory-private.h \
|
||||
compositor/meta-shaped-texture.c \
|
||||
compositor/meta-shaped-texture.h \
|
||||
compositor/meta-texture-rectangle.c \
|
||||
compositor/meta-texture-rectangle.h \
|
||||
compositor/meta-texture-tower.c \
|
||||
compositor/meta-texture-tower.h \
|
||||
compositor/meta-window-actor.c \
|
||||
compositor/meta-window-actor-private.h \
|
||||
compositor/meta-window-group.c \
|
||||
compositor/meta-window-group.h \
|
||||
compositor/meta-window-shape.c \
|
||||
compositor/meta-window-shape.h \
|
||||
compositor/region-utils.c \
|
||||
compositor/region-utils.h \
|
||||
meta/compositor.h \
|
||||
meta/meta-background-actor.h \
|
||||
meta/meta-plugin.h \
|
||||
meta/meta-shadow-factory.h \
|
||||
meta/meta-window-actor.h \
|
||||
meta/compositor-mutter.h \
|
||||
core/above-tab-keycode.c \
|
||||
core/constraints.c \
|
||||
core/constraints.h \
|
||||
core/core.c \
|
||||
core/delete.c \
|
||||
core/display.c \
|
||||
core/display-private.h \
|
||||
include/display.h \
|
||||
meta/display.h \
|
||||
ui/draw-workspace.c \
|
||||
ui/draw-workspace.h \
|
||||
core/edge-resistance.c \
|
||||
core/edge-resistance.h \
|
||||
core/effects.c \
|
||||
core/effects.h \
|
||||
core/errors.c \
|
||||
include/errors.h \
|
||||
meta/errors.h \
|
||||
core/eventqueue.c \
|
||||
core/eventqueue.h \
|
||||
core/frame.c \
|
||||
core/frame-private.h \
|
||||
include/frame.h \
|
||||
core/frame.h \
|
||||
ui/gradient.c \
|
||||
ui/gradient.h \
|
||||
meta/gradient.h \
|
||||
core/group-private.h \
|
||||
core/group-props.c \
|
||||
core/group-props.h \
|
||||
core/group.c \
|
||||
include/group.h \
|
||||
meta/group.h \
|
||||
core/iconcache.c \
|
||||
core/iconcache.h \
|
||||
core/keybindings.c \
|
||||
core/keybindings-private.h \
|
||||
core/main.c \
|
||||
include/main.h \
|
||||
core/metacity-Xatomtype.h \
|
||||
core/mutter-Xatomtype.h \
|
||||
core/place.c \
|
||||
core/place.h \
|
||||
core/prefs.c \
|
||||
include/prefs.h \
|
||||
meta/prefs.h \
|
||||
core/screen.c \
|
||||
core/screen-private.h \
|
||||
include/screen.h \
|
||||
include/types.h \
|
||||
meta/screen.h \
|
||||
meta/types.h \
|
||||
core/session.c \
|
||||
core/session.h \
|
||||
core/stack.c \
|
||||
core/stack.h \
|
||||
core/stack-tracker.c \
|
||||
core/stack-tracker.h \
|
||||
core/util.c \
|
||||
include/util.h \
|
||||
meta/util.h \
|
||||
core/window-props.c \
|
||||
core/window-props.h \
|
||||
core/window.c \
|
||||
core/window-private.h \
|
||||
include/window.h \
|
||||
meta/window.h \
|
||||
core/workspace.c \
|
||||
core/workspace-private.h \
|
||||
core/xprops.c \
|
||||
include/xprops.h \
|
||||
include/common.h \
|
||||
include/core.h \
|
||||
include/ui.h \
|
||||
core/xprops.h \
|
||||
meta/common.h \
|
||||
core/core.h \
|
||||
ui/ui.h \
|
||||
inlinepixbufs.h \
|
||||
ui/fixedtip.c \
|
||||
ui/fixedtip.h \
|
||||
@@ -90,134 +142,132 @@ metacity_SOURCES= \
|
||||
ui/metaaccellabel.c \
|
||||
ui/metaaccellabel.h \
|
||||
ui/resizepopup.c \
|
||||
include/resizepopup.h \
|
||||
ui/resizepopup.h \
|
||||
ui/tabpopup.c \
|
||||
include/tabpopup.h \
|
||||
ui/tabpopup.h \
|
||||
ui/tile-preview.c \
|
||||
ui/tile-preview.h \
|
||||
ui/theme-parser.c \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.c \
|
||||
ui/theme.h \
|
||||
ui/themewidget.c \
|
||||
ui/themewidget.h \
|
||||
meta/theme.h \
|
||||
ui/theme-private.h \
|
||||
ui/ui.c \
|
||||
include/all-keybindings.h
|
||||
|
||||
if WITH_CLUTTER
|
||||
metacity_SOURCES += \
|
||||
compositor/mutter/compositor-mutter.c \
|
||||
compositor/mutter/mutter-shaped-texture.c \
|
||||
compositor/mutter/mutter-shaped-texture.h \
|
||||
compositor/mutter/mutter-plugin-manager.c \
|
||||
compositor/mutter/mutter-plugin-manager.h \
|
||||
compositor/mutter/tidy/tidy-texture-frame.c \
|
||||
compositor/mutter/tidy/tidy-texture-frame.h \
|
||||
compositor/mutter/mutter-module.c \
|
||||
compositor/mutter/mutter-module.h \
|
||||
compositor/mutter/mutter-plugin.c \
|
||||
include/mutter-plugin.h \
|
||||
include/compositor-mutter.h
|
||||
endif
|
||||
|
||||
# by setting libmetacity_private_la_CFLAGS, the files shared with
|
||||
# metacity proper will be compiled with different names.
|
||||
libmetacity_private_la_CFLAGS =
|
||||
libmetacity_private_la_SOURCES= \
|
||||
core/boxes.c \
|
||||
include/boxes.h \
|
||||
ui/gradient.c \
|
||||
ui/gradient.h \
|
||||
core/util.c \
|
||||
include/util.h \
|
||||
include/common.h \
|
||||
core/all-keybindings.h \
|
||||
meta/preview-widget.h \
|
||||
ui/preview-widget.c \
|
||||
ui/preview-widget.h \
|
||||
ui/theme-parser.c \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.c \
|
||||
ui/theme.h
|
||||
$(mutter_built_sources)
|
||||
|
||||
libmetacity_private_la_LDFLAGS = -no-undefined
|
||||
libmetacity_private_la_LIBADD = @METACITY_LIBS@
|
||||
libmutter_la_LDFLAGS = -no-undefined
|
||||
libmutter_la_LIBADD = $(MUTTER_LIBS)
|
||||
|
||||
libmetacityincludedir = $(includedir)/metacity-1/metacity-private
|
||||
# Headers installed for plugins; introspected information will
|
||||
# be extracted into Mutter-<version>.gir
|
||||
libmutterinclude_base_headers = \
|
||||
meta/boxes.h \
|
||||
meta/common.h \
|
||||
meta/compositor-mutter.h \
|
||||
meta/compositor.h \
|
||||
meta/display.h \
|
||||
meta/errors.h \
|
||||
meta/gradient.h \
|
||||
meta/group.h \
|
||||
meta/keybindings.h \
|
||||
meta/main.h \
|
||||
meta/meta-background-actor.h \
|
||||
meta/meta-plugin.h \
|
||||
meta/meta-shadow-factory.h \
|
||||
meta/meta-window-actor.h \
|
||||
meta/prefs.h \
|
||||
meta/screen.h \
|
||||
meta/theme.h \
|
||||
meta/types.h \
|
||||
meta/util.h \
|
||||
meta/window.h \
|
||||
meta/workspace.h
|
||||
|
||||
libmetacityinclude_HEADERS = \
|
||||
include/boxes.h \
|
||||
ui/gradient.h \
|
||||
include/util.h \
|
||||
include/common.h \
|
||||
ui/preview-widget.h \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.h \
|
||||
include/atomnames.h \
|
||||
include/prefs.h \
|
||||
include/window.h \
|
||||
include/workspace.h \
|
||||
include/compositor.h \
|
||||
include/compositor-mutter.h \
|
||||
include/types.h \
|
||||
include/screen.h \
|
||||
include/display.h \
|
||||
include/group.h \
|
||||
include/keybindings.h \
|
||||
include/mutter-plugin.h
|
||||
# Excluded from scanning for introspection but installed
|
||||
# atomnames.h: macros cause problems for scanning process
|
||||
libmutterinclude_extra_headers = \
|
||||
meta/preview-widget.h \
|
||||
meta/atomnames.h
|
||||
|
||||
metacity_theme_viewer_SOURCES= \
|
||||
libmutterincludedir = $(includedir)/mutter/meta
|
||||
|
||||
libmutterinclude_HEADERS = \
|
||||
$(libmutterinclude_base_headers) \
|
||||
$(libmutterinclude_extra_headers)
|
||||
|
||||
mutter_theme_viewer_SOURCES= \
|
||||
ui/theme-viewer.c
|
||||
|
||||
metacity_dialog_SOURCES= \
|
||||
ui/metacity-dialog.c
|
||||
bin_PROGRAMS=mutter mutter-theme-viewer
|
||||
|
||||
schema_bindings_SOURCES = \
|
||||
core/schema-bindings.c \
|
||||
metacity.schemas.in.in
|
||||
mutter_SOURCES = core/mutter.c
|
||||
mutter_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
|
||||
schema_bindings_LDADD = @METACITY_LIBS@
|
||||
metacity.schemas.in: schema_bindings ${srcdir}/metacity.schemas.in.in
|
||||
@echo Generating keybinding schemas... ${srcdir}/metacity.schemas.in.in
|
||||
${builddir}/schema_bindings ${srcdir}/metacity.schemas.in.in ${builddir}/metacity.schemas.in
|
||||
if HAVE_INTROSPECTION
|
||||
include $(INTROSPECTION_MAKEFILE)
|
||||
|
||||
bin_PROGRAMS=metacity metacity-theme-viewer
|
||||
libexec_PROGRAMS=metacity-dialog
|
||||
# Since we don't make any guarantees about stability and we don't support
|
||||
# parallel install, there's no real reason to change directories, filenames,
|
||||
# etc. as we change the Mutter tarball version.
|
||||
#api_version = $(MUTTER_MAJOR_VERSION).$(MUTTER_MINOR_VERSION)
|
||||
api_version = 3.0
|
||||
|
||||
EFENCE=
|
||||
metacity_LDADD=@METACITY_LIBS@ $(EFENCE)
|
||||
metacity_LDFLAGS=-export-dynamic
|
||||
metacity_theme_viewer_LDADD= @METACITY_LIBS@ libmetacity-private.la
|
||||
metacity_dialog_LDADD=@METACITY_LIBS@
|
||||
# These files are in package-private directories, even though they may be used
|
||||
# by plugins. If you're writing a plugin, use g-ir-compiler --add-include-path
|
||||
# and g-ir-compiler --includedir.
|
||||
girdir = $(pkglibdir)
|
||||
gir_DATA = Meta-$(api_version).gir
|
||||
|
||||
testboxes_SOURCES=include/util.h core/util.c include/boxes.h core/boxes.c core/testboxes.c
|
||||
testgradient_SOURCES=ui/gradient.h ui/gradient.c ui/testgradient.c
|
||||
testasyncgetprop_SOURCES=core/async-getprop.h core/async-getprop.c core/testasyncgetprop.c
|
||||
typelibdir = $(pkglibdir)
|
||||
typelib_DATA = Meta-$(api_version).typelib
|
||||
|
||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop schema_bindings
|
||||
INTROSPECTION_GIRS = Meta-$(api_version).gir
|
||||
|
||||
testboxes_LDADD= @METACITY_LIBS@
|
||||
testgradient_LDADD= @METACITY_LIBS@
|
||||
testasyncgetprop_LDADD= @METACITY_LIBS@
|
||||
Meta-$(api_version).gir: libmutter.la
|
||||
@META_GIR@_INCLUDES = GObject-2.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0
|
||||
@META_GIR@_PACKAGES = clutter-1.0 gtk+-3.0
|
||||
@META_GIR@_CFLAGS = $(INCLUDES)
|
||||
@META_GIR@_LIBS = libmutter.la
|
||||
@META_GIR@_FILES = \
|
||||
mutter-enum-types.h \
|
||||
$(libmutterinclude_base_headers) \
|
||||
$(filter %.c,$(libmutter_la_SOURCES))
|
||||
@META_GIR@_SCANNERFLAGS = --warn-all --warn-error
|
||||
|
||||
endif
|
||||
|
||||
mutter_theme_viewer_LDADD= $(MUTTER_LIBS) libmutter.la
|
||||
|
||||
testboxes_SOURCES = core/testboxes.c
|
||||
testgradient_SOURCES = ui/testgradient.c
|
||||
testasyncgetprop_SOURCES = core/testasyncgetprop.c
|
||||
|
||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
|
||||
|
||||
testboxes_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
testgradient_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
desktopfilesdir=$(datadir)/applications
|
||||
desktopfiles_in_files=metacity.desktop.in
|
||||
desktopfiles_in_files=mutter.desktop.in
|
||||
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
||||
desktopfiles_DATA = $(desktopfiles_files)
|
||||
|
||||
wmpropertiesdir=$(datadir)/gnome/wm-properties
|
||||
wmproperties_in_files=metacity-wm.desktop.in
|
||||
wmproperties_in_files=mutter-wm.desktop.in
|
||||
wmproperties_files=$(wmproperties_in_files:.desktop.in=.desktop)
|
||||
wmproperties_DATA = $(wmproperties_files)
|
||||
|
||||
schemadir = @GCONF_SCHEMA_FILE_DIR@
|
||||
schema_in_files = metacity.schemas.in
|
||||
schemadir = $(GCONF_SCHEMA_FILE_DIR)
|
||||
schema_in_files = mutter.schemas.in
|
||||
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
|
||||
|
||||
@INTLTOOL_XML_NOMERGE_RULE@
|
||||
|
||||
xmldir = @GNOME_KEYBINDINGS_KEYSDIR@
|
||||
xml_in_files = 50-metacity-desktop-key.xml.in 50-metacity-key.xml.in
|
||||
xml_DATA = $(xml_in_files:.xml.in=.xml)
|
||||
|
||||
@INTLTOOL_SCHEMAS_RULE@
|
||||
|
||||
if GCONF_SCHEMAS_INSTALL
|
||||
@@ -233,22 +283,73 @@ VARIABLES=stock_maximize_data $(srcdir)/stock_maximize.png \
|
||||
stock_delete_data $(srcdir)/stock_delete.png
|
||||
|
||||
BUILT_SOURCES = inlinepixbufs.h
|
||||
CLEANFILES = inlinepixbufs.h metacity.desktop metacity-wm.desktop metacity.schemas metacity.schemas.in 50-metacity-desktop-key.xml 50-metacity-key.xml
|
||||
CLEANFILES = \
|
||||
inlinepixbufs.h \
|
||||
mutter.desktop \
|
||||
mutter-wm.desktop \
|
||||
mutter.schemas \
|
||||
$(mutter_built_sources) \
|
||||
$(typelib_DATA) \
|
||||
$(gir_DATA)
|
||||
|
||||
inlinepixbufs.h: $(IMAGES)
|
||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
pkgconfig_DATA = libmetacity-private.pc metacity-plugins.pc
|
||||
pkgconfig_DATA = libmutter.pc mutter-plugins.pc
|
||||
|
||||
EXTRA_DIST=$(desktopfiles_files) \
|
||||
$(wmproperties_files) \
|
||||
$(IMAGES) $(schema_DATA) \
|
||||
$(IMAGES) \
|
||||
$(desktopfiles_in_files) \
|
||||
$(wmproperties_in_files) \
|
||||
$(schema_in_files) \
|
||||
$(xml_in_files) \
|
||||
libmetacity-private.pc.in \
|
||||
metacity-plugins.pc.in
|
||||
libmutter.pc.in \
|
||||
mutter-plugins.pc.in \
|
||||
mutter-enum-types.h.in \
|
||||
mutter-enum-types.c.in \
|
||||
mutter-marshal.list
|
||||
|
||||
BUILT_SOURCES += $(mutter_built_sources)
|
||||
MUTTER_STAMP_FILES = stamp-mutter-marshal.h stamp-mutter-enum-types.h
|
||||
CLEANFILES += $(MUTTER_STAMP_FILES)
|
||||
|
||||
mutter-marshal.h: stamp-mutter-marshal.h
|
||||
@true
|
||||
stamp-mutter-marshal.h: Makefile mutter-marshal.list
|
||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) \
|
||||
--prefix=_mutter_marshal \
|
||||
--header \
|
||||
$(srcdir)/mutter-marshal.list > xgen-tmh && \
|
||||
(cmp -s xgen-tmh mutter-marshal.h || cp -f xgen-tmh mutter-marshal.h) && \
|
||||
rm -f xgen-tmh && \
|
||||
echo timestamp > $(@F)
|
||||
|
||||
mutter-marshal.c: Makefile mutter-marshal.list
|
||||
$(AM_V_GEN) (echo "#include \"mutter-marshal.h\"" ; \
|
||||
$(GLIB_GENMARSHAL) \
|
||||
--prefix=_mutter_marshal \
|
||||
--body \
|
||||
$(srcdir)/mutter-marshal.list ) > xgen-tmc && \
|
||||
cp -f xgen-tmc mutter-marshal.c && \
|
||||
rm -f xgen-tmc
|
||||
|
||||
mutter-enum-types.h: stamp-mutter-enum-types.h Makefile
|
||||
@true
|
||||
stamp-mutter-enum-types.h: $(libmutterinclude_base_headers) mutter-enum-types.h.in
|
||||
$(AM_V_GEN) ( cd $(srcdir) && \
|
||||
$(GLIB_MKENUMS) \
|
||||
--template mutter-enum-types.h.in \
|
||||
$(libmutterinclude_base_headers) ) >> xgen-teth && \
|
||||
(cmp -s xgen-teth mutter-enum-types.h || cp xgen-teth mutter-enum-types.h) && \
|
||||
rm -f xgen-teth && \
|
||||
echo timestamp > $(@F)
|
||||
|
||||
mutter-enum-types.c: stamp-mutter-enum-types.h mutter-enum-types.c.in
|
||||
$(AM_V_GEN) ( cd $(srcdir) && \
|
||||
$(GLIB_MKENUMS) \
|
||||
--template mutter-enum-types.c.in \
|
||||
$(libmutterinclude_base_headers) ) >> xgen-tetc && \
|
||||
cp xgen-tetc mutter-enum-types.c && \
|
||||
rm -f xgen-tetc
|
||||
|
110
src/compositor/cogl-utils.c
Normal file
110
src/compositor/cogl-utils.c
Normal file
@@ -0,0 +1,110 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* Utilities for use with Cogl
|
||||
*
|
||||
* Copyright 2010 Red Hat, Inc.
|
||||
* Copyright 2010 Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "cogl-utils.h"
|
||||
|
||||
/**
|
||||
* meta_create_color_texture_4ub:
|
||||
* @red:
|
||||
* @green:
|
||||
* @blue:
|
||||
* @alpha:
|
||||
* @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE;
|
||||
* %COGL_TEXTURE_NO_SLICING is useful if the texture will be
|
||||
* repeated to create a constant color fill, since hardware
|
||||
* repeat can't be used for a sliced texture.
|
||||
*
|
||||
* Creates a texture that is a single pixel with the specified
|
||||
* unpremultiplied color components.
|
||||
*
|
||||
* Return value: (transfer full): a newly created Cogl texture
|
||||
*/
|
||||
CoglHandle
|
||||
meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha,
|
||||
CoglTextureFlags flags)
|
||||
{
|
||||
CoglColor color;
|
||||
guint8 pixel[4];
|
||||
|
||||
cogl_color_set_from_4ub (&color, red, green, blue, alpha);
|
||||
cogl_color_premultiply (&color);
|
||||
|
||||
pixel[0] = cogl_color_get_red_byte (&color);
|
||||
pixel[1] = cogl_color_get_green_byte (&color);
|
||||
pixel[2] = cogl_color_get_blue_byte (&color);
|
||||
pixel[3] = cogl_color_get_alpha_byte (&color);
|
||||
|
||||
return cogl_texture_new_from_data (1, 1,
|
||||
flags,
|
||||
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
|
||||
COGL_PIXEL_FORMAT_ANY,
|
||||
4, pixel);
|
||||
}
|
||||
|
||||
|
||||
/* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */
|
||||
|
||||
/**
|
||||
* meta_create_texture_material:
|
||||
* @src_texture: (allow-none): texture to use initially for the layer
|
||||
*
|
||||
* Creates a material with a single layer. Using a common template
|
||||
* allows sharing a shader for different uses in Mutter. To share the same
|
||||
* shader with all other materials that are just texture plus opacity
|
||||
* would require Cogl fixes.
|
||||
* (See http://bugzilla.clutter-project.org/show_bug.cgi?id=2425)
|
||||
*
|
||||
* Return value: (transfer full): a newly created Cogl material
|
||||
*/
|
||||
CoglHandle
|
||||
meta_create_texture_material (CoglHandle src_texture)
|
||||
{
|
||||
static CoglHandle texture_material_template = COGL_INVALID_HANDLE;
|
||||
CoglHandle material;
|
||||
|
||||
/* We use a material that has a dummy texture as a base for all
|
||||
texture materials. The idea is that only the Cogl texture object
|
||||
would be different in the children so it is likely that Cogl will
|
||||
be able to share GL programs between all the textures. */
|
||||
if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE))
|
||||
{
|
||||
CoglHandle dummy_texture;
|
||||
|
||||
dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff,
|
||||
COGL_TEXTURE_NONE);
|
||||
|
||||
texture_material_template = cogl_material_new ();
|
||||
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
|
||||
cogl_handle_unref (dummy_texture);
|
||||
}
|
||||
|
||||
material = cogl_material_copy (texture_material_template);
|
||||
|
||||
if (src_texture != COGL_INVALID_HANDLE)
|
||||
cogl_material_set_layer (material, 0, src_texture);
|
||||
|
||||
return material;
|
||||
}
|
@@ -1,7 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
* Utilities for use with Cogl
|
||||
*
|
||||
* Copyright 2010 Red Hat, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
@@ -19,13 +20,16 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_FRAME_H
|
||||
#define META_FRAME_H
|
||||
#ifndef __META_COGL_UTILS_H__
|
||||
#define __META_COGL_UTILS_H__
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <cogl/cogl.h>
|
||||
|
||||
#include "types.h"
|
||||
CoglHandle meta_create_color_texture_4ub (guint8 red,
|
||||
guint8 green,
|
||||
guint8 blue,
|
||||
guint8 alpha,
|
||||
CoglTextureFlags flags);
|
||||
CoglHandle meta_create_texture_material (CoglHandle src_texture);
|
||||
|
||||
Window meta_frame_get_xwindow (MetaFrame *frame);
|
||||
|
||||
#endif
|
||||
#endif /* __META_COGL_UTILS_H__ */
|
@@ -1,90 +1,74 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_COMPOSITOR_PRIVATE_H
|
||||
#define META_COMPOSITOR_PRIVATE_H
|
||||
|
||||
#include "compositor.h"
|
||||
#include <X11/extensions/Xfixes.h>
|
||||
|
||||
#include <meta/compositor.h>
|
||||
#include <meta/display.h>
|
||||
#include "meta-plugin-manager.h"
|
||||
#include "meta-window-actor-private.h"
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
typedef struct _MetaCompScreen MetaCompScreen;
|
||||
|
||||
struct _MetaCompositor
|
||||
{
|
||||
void (* destroy) (MetaCompositor *compositor);
|
||||
MetaDisplay *display;
|
||||
|
||||
void (*manage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*unmanage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*add_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*remove_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*set_updates) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean update);
|
||||
gboolean (*process_event) (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window);
|
||||
Pixmap (*get_window_pixmap) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*set_active_window) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
void (*map_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*unmap_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*minimize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect,
|
||||
MetaRectangle *icon_rect);
|
||||
void (*unminimize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect,
|
||||
MetaRectangle *icon_rect);
|
||||
void (*maximize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect);
|
||||
void (*unmaximize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect);
|
||||
void (*update_workspace_geometry) (MetaCompositor *compositor,
|
||||
MetaWorkspace *workspace);
|
||||
void (*switch_workspace) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWorkspace *from,
|
||||
MetaWorkspace *to,
|
||||
MetaMotionDirection direction);
|
||||
void (*sync_stack) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
GList *stack);
|
||||
void (*set_window_hidden) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
gboolean hidden);
|
||||
void (*sync_window_geometry) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*sync_screen_size) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
guint width,
|
||||
guint height);
|
||||
Atom atom_x_root_pixmap;
|
||||
Atom atom_x_set_root;
|
||||
Atom atom_net_wm_window_opacity;
|
||||
guint repaint_func_id;
|
||||
|
||||
ClutterActor *shadow_src;
|
||||
|
||||
MetaPlugin *modal_plugin;
|
||||
|
||||
gboolean show_redraw : 1;
|
||||
gboolean debug : 1;
|
||||
gboolean no_mipmaps : 1;
|
||||
};
|
||||
|
||||
#endif
|
||||
struct _MetaCompScreen
|
||||
{
|
||||
MetaScreen *screen;
|
||||
|
||||
ClutterActor *stage, *window_group, *overlay_group;
|
||||
ClutterActor *background_actor;
|
||||
ClutterActor *hidden_group;
|
||||
GList *windows;
|
||||
GHashTable *windows_by_xid;
|
||||
Window output;
|
||||
|
||||
/* Used for unredirecting fullscreen windows */
|
||||
guint disable_unredirect_count;
|
||||
MetaWindowActor *unredirected_window;
|
||||
|
||||
/* Before we create the output window */
|
||||
XserverRegion pending_input_region;
|
||||
|
||||
gint switch_workspace_in_progress;
|
||||
|
||||
MetaPluginManager *plugin_mgr;
|
||||
};
|
||||
|
||||
void meta_switch_workspace_completed (MetaScreen *screen);
|
||||
void meta_set_stage_input_region (MetaScreen *screen,
|
||||
XserverRegion region);
|
||||
void meta_empty_stage_input_region (MetaScreen *screen);
|
||||
|
||||
gboolean meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||
MetaPlugin *plugin,
|
||||
Window grab_window,
|
||||
Cursor cursor,
|
||||
MetaModalOptions options,
|
||||
guint32 timestamp);
|
||||
void meta_end_modal_for_plugin (MetaScreen *screen,
|
||||
MetaPlugin *plugin,
|
||||
guint32 timestamp);
|
||||
|
||||
void meta_check_end_modal (MetaScreen *screen);
|
||||
|
||||
#endif /* META_COMPOSITOR_PRIVATE_H */
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
15
src/compositor/meta-background-actor-private.h
Normal file
15
src/compositor/meta-background-actor-private.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#ifndef META_BACKGROUND_ACTOR_PRIVATE_H
|
||||
#define META_BACKGROUND_ACTOR_PRIVATE_H
|
||||
|
||||
#include <meta/screen.h>
|
||||
#include <meta/meta-background-actor.h>
|
||||
|
||||
void meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
||||
cairo_region_t *visible_region);
|
||||
|
||||
void meta_background_actor_update (MetaScreen *screen);
|
||||
void meta_background_actor_screen_size_changed (MetaScreen *screen);
|
||||
|
||||
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
|
614
src/compositor/meta-background-actor.c
Normal file
614
src/compositor/meta-background-actor.c
Normal file
@@ -0,0 +1,614 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* meta-background-actor.c: Actor for painting the root window background
|
||||
*
|
||||
* Copyright 2009 Sander Dijkhuis
|
||||
* Copyright 2010 Red Hat, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Portions adapted from gnome-shell/src/shell-global.c
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||
#include <cogl/cogl-texture-pixmap-x11.h>
|
||||
|
||||
#include <X11/Xatom.h>
|
||||
|
||||
#include "cogl-utils.h"
|
||||
#include "compositor-private.h"
|
||||
#include <meta/errors.h>
|
||||
#include "meta-background-actor-private.h"
|
||||
|
||||
/* We allow creating multiple MetaBackgroundActors for the same MetaScreen to
|
||||
* allow different rendering options to be set for different copies.
|
||||
* But we want to share the same underlying CoglTexture for efficiency and
|
||||
* to avoid driver bugs that might occur if we created multiple CoglTexturePixmaps
|
||||
* for the same pixmap.
|
||||
*
|
||||
* This structure holds common information.
|
||||
*/
|
||||
typedef struct _MetaScreenBackground MetaScreenBackground;
|
||||
|
||||
struct _MetaScreenBackground
|
||||
{
|
||||
MetaScreen *screen;
|
||||
GSList *actors;
|
||||
|
||||
float texture_width;
|
||||
float texture_height;
|
||||
CoglHandle texture;
|
||||
CoglMaterialWrapMode wrap_mode;
|
||||
guint have_pixmap : 1;
|
||||
};
|
||||
|
||||
struct _MetaBackgroundActorPrivate
|
||||
{
|
||||
MetaScreenBackground *background;
|
||||
CoglHandle material;
|
||||
cairo_region_t *visible_region;
|
||||
float dim_factor;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
|
||||
PROP_DIM_FACTOR,
|
||||
|
||||
PROP_LAST
|
||||
};
|
||||
|
||||
static GParamSpec *obj_props[PROP_LAST];
|
||||
|
||||
G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR);
|
||||
|
||||
static void set_texture (MetaScreenBackground *background,
|
||||
CoglHandle texture);
|
||||
static void set_texture_to_stage_color (MetaScreenBackground *background);
|
||||
|
||||
static void
|
||||
on_notify_stage_color (GObject *stage,
|
||||
GParamSpec *pspec,
|
||||
MetaScreenBackground *background)
|
||||
{
|
||||
if (!background->have_pixmap)
|
||||
set_texture_to_stage_color (background);
|
||||
}
|
||||
|
||||
static void
|
||||
free_screen_background (MetaScreenBackground *background)
|
||||
{
|
||||
set_texture (background, COGL_INVALID_HANDLE);
|
||||
|
||||
if (background->screen != NULL)
|
||||
{
|
||||
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
|
||||
g_signal_handlers_disconnect_by_func (stage,
|
||||
(gpointer) on_notify_stage_color,
|
||||
background);
|
||||
background->screen = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static MetaScreenBackground *
|
||||
meta_screen_background_get (MetaScreen *screen)
|
||||
{
|
||||
MetaScreenBackground *background;
|
||||
|
||||
background = g_object_get_data (G_OBJECT (screen), "meta-screen-background");
|
||||
if (background == NULL)
|
||||
{
|
||||
ClutterActor *stage;
|
||||
|
||||
background = g_new0 (MetaScreenBackground, 1);
|
||||
|
||||
background->screen = screen;
|
||||
g_object_set_data_full (G_OBJECT (screen), "meta-screen-background",
|
||||
background, (GDestroyNotify) free_screen_background);
|
||||
|
||||
stage = meta_get_stage_for_screen (screen);
|
||||
g_signal_connect (stage, "notify::color",
|
||||
G_CALLBACK (on_notify_stage_color), background);
|
||||
|
||||
meta_background_actor_update (screen);
|
||||
}
|
||||
|
||||
return background;
|
||||
}
|
||||
|
||||
static void
|
||||
update_wrap_mode_of_actor (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
cogl_material_set_layer_wrap_mode (priv->material, 0, priv->background->wrap_mode);
|
||||
}
|
||||
|
||||
static void
|
||||
update_wrap_mode (MetaScreenBackground *background)
|
||||
{
|
||||
GSList *l;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (background->screen, &width, &height);
|
||||
|
||||
/* We turn off repeating when we have a full-screen pixmap to keep from
|
||||
* getting artifacts from one side of the image sneaking into the other
|
||||
* side of the image via bilinear filtering.
|
||||
*/
|
||||
if (width == background->texture_width && height == background->texture_height)
|
||||
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE;
|
||||
else
|
||||
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_REPEAT;
|
||||
|
||||
for (l = background->actors; l; l = l->next)
|
||||
update_wrap_mode_of_actor (l->data);
|
||||
}
|
||||
|
||||
static void
|
||||
set_texture_on_actor (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
MetaDisplay *display = meta_screen_get_display (priv->background->screen);
|
||||
|
||||
/* This may trigger destruction of an old texture pixmap, which, if
|
||||
* the underlying X pixmap is already gone has the tendency to trigger
|
||||
* X errors inside DRI. For safety, trap errors */
|
||||
meta_error_trap_push (display);
|
||||
cogl_material_set_layer (priv->material, 0, priv->background->texture);
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
|
||||
}
|
||||
|
||||
static void
|
||||
set_texture (MetaScreenBackground *background,
|
||||
CoglHandle texture)
|
||||
{
|
||||
MetaDisplay *display = meta_screen_get_display (background->screen);
|
||||
GSList *l;
|
||||
|
||||
/* This may trigger destruction of an old texture pixmap, which, if
|
||||
* the underlying X pixmap is already gone has the tendency to trigger
|
||||
* X errors inside DRI. For safety, trap errors */
|
||||
meta_error_trap_push (display);
|
||||
if (background->texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (background->texture);
|
||||
background->texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
if (texture != COGL_INVALID_HANDLE)
|
||||
background->texture = cogl_handle_ref (texture);
|
||||
|
||||
background->texture_width = cogl_texture_get_width (background->texture);
|
||||
background->texture_height = cogl_texture_get_height (background->texture);
|
||||
|
||||
for (l = background->actors; l; l = l->next)
|
||||
set_texture_on_actor (l->data);
|
||||
|
||||
update_wrap_mode (background);
|
||||
}
|
||||
|
||||
/* Sets our material to paint with a 1x1 texture of the stage's background
|
||||
* color; doing this when we have no pixmap allows the application to turn
|
||||
* off painting the stage. There might be a performance benefit to
|
||||
* painting in this case with a solid color, but the normal solid color
|
||||
* case is a 1x1 root pixmap, so we'd have to reverse-engineer that to
|
||||
* actually pick up the (small?) performance win. This is just a fallback.
|
||||
*/
|
||||
static void
|
||||
set_texture_to_stage_color (MetaScreenBackground *background)
|
||||
{
|
||||
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
|
||||
ClutterColor color;
|
||||
CoglHandle texture;
|
||||
|
||||
clutter_stage_get_color (CLUTTER_STAGE (stage), &color);
|
||||
|
||||
/* Slicing will prevent COGL from using hardware texturing for
|
||||
* the tiled 1x1 pixmap, and will cause it to draw the window
|
||||
* background in millions of separate 1x1 rectangles */
|
||||
texture = meta_create_color_texture_4ub (color.red, color.green,
|
||||
color.blue, 0xff,
|
||||
COGL_TEXTURE_NO_SLICING);
|
||||
set_texture (background, texture);
|
||||
cogl_handle_unref (texture);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_dispose (GObject *object)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
meta_background_actor_set_visible_region (self, NULL);
|
||||
|
||||
if (priv->background != NULL)
|
||||
{
|
||||
priv->background->actors = g_slist_remove (priv->background->actors, self);
|
||||
priv->background = NULL;
|
||||
}
|
||||
|
||||
if (priv->material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_handle_unref (priv->material);
|
||||
priv->material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_get_preferred_width (ClutterActor *actor,
|
||||
gfloat for_height,
|
||||
gfloat *min_width_p,
|
||||
gfloat *natural_width_p)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
|
||||
if (min_width_p)
|
||||
*min_width_p = width;
|
||||
if (natural_width_p)
|
||||
*natural_width_p = width;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_get_preferred_height (ClutterActor *actor,
|
||||
gfloat for_width,
|
||||
gfloat *min_height_p,
|
||||
gfloat *natural_height_p)
|
||||
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
|
||||
if (min_height_p)
|
||||
*min_height_p = height;
|
||||
if (natural_height_p)
|
||||
*natural_height_p = height;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_paint (ClutterActor *actor)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
guint8 opacity = clutter_actor_get_paint_opacity (actor);
|
||||
guint8 color_component;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
|
||||
color_component = (int)(0.5 + opacity * priv->dim_factor);
|
||||
|
||||
cogl_material_set_color4ub (priv->material,
|
||||
color_component,
|
||||
color_component,
|
||||
color_component,
|
||||
opacity);
|
||||
|
||||
cogl_set_source (priv->material);
|
||||
|
||||
if (priv->visible_region)
|
||||
{
|
||||
int n_rectangles = cairo_region_num_rectangles (priv->visible_region);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n_rectangles; i++)
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
cairo_region_get_rectangle (priv->visible_region, i, &rect);
|
||||
|
||||
cogl_rectangle_with_texture_coords (rect.x, rect.y,
|
||||
rect.x + rect.width, rect.y + rect.height,
|
||||
rect.x / priv->background->texture_width,
|
||||
rect.y / priv->background->texture_height,
|
||||
(rect.x + rect.width) / priv->background->texture_width,
|
||||
(rect.y + rect.height) / priv->background->texture_height);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cogl_rectangle_with_texture_coords (0.0f, 0.0f,
|
||||
width, height,
|
||||
0.0f, 0.0f,
|
||||
width / priv->background->texture_width,
|
||||
height / priv->background->texture_height);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_background_actor_get_paint_volume (ClutterActor *actor,
|
||||
ClutterPaintVolume *volume)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
int width, height;
|
||||
|
||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
||||
|
||||
clutter_paint_volume_set_width (volume, width);
|
||||
clutter_paint_volume_set_height (volume, height);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_set_dim_factor (MetaBackgroundActor *self,
|
||||
gfloat dim_factor)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
if (priv->dim_factor == dim_factor)
|
||||
return;
|
||||
|
||||
priv->dim_factor = dim_factor;
|
||||
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_DIM_FACTOR]);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_get_property(GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||
MetaBackgroundActorPrivate *priv = self->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DIM_FACTOR:
|
||||
g_value_set_float (value, priv->dim_factor);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_set_property(GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_DIM_FACTOR:
|
||||
meta_background_actor_set_dim_factor (self, g_value_get_float (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_class_init (MetaBackgroundActorClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||
GParamSpec *pspec;
|
||||
|
||||
g_type_class_add_private (klass, sizeof (MetaBackgroundActorPrivate));
|
||||
|
||||
object_class->dispose = meta_background_actor_dispose;
|
||||
object_class->get_property = meta_background_actor_get_property;
|
||||
object_class->set_property = meta_background_actor_set_property;
|
||||
|
||||
actor_class->get_preferred_width = meta_background_actor_get_preferred_width;
|
||||
actor_class->get_preferred_height = meta_background_actor_get_preferred_height;
|
||||
actor_class->paint = meta_background_actor_paint;
|
||||
actor_class->get_paint_volume = meta_background_actor_get_paint_volume;
|
||||
|
||||
/**
|
||||
* MetaBackgroundActor:dim-factor:
|
||||
*
|
||||
* Factor to dim the background by, between 0.0 (black) and 1.0 (original
|
||||
* colors)
|
||||
*/
|
||||
pspec = g_param_spec_float ("dim-factor",
|
||||
"Dim factor",
|
||||
"Factor to dim the background by",
|
||||
0.0, 1.0,
|
||||
1.0,
|
||||
G_PARAM_READWRITE);
|
||||
obj_props[PROP_DIM_FACTOR] = pspec;
|
||||
g_object_class_install_property (object_class, PROP_DIM_FACTOR, pspec);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_background_actor_init (MetaBackgroundActor *self)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
|
||||
priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||
META_TYPE_BACKGROUND_ACTOR,
|
||||
MetaBackgroundActorPrivate);
|
||||
priv->dim_factor = 1.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_new:
|
||||
* @screen: the #MetaScreen
|
||||
*
|
||||
* Creates a new actor to draw the background for the given screen.
|
||||
*
|
||||
* Return value: the newly created background actor
|
||||
*/
|
||||
ClutterActor *
|
||||
meta_background_actor_new_for_screen (MetaScreen *screen)
|
||||
{
|
||||
MetaBackgroundActor *self;
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (META_IS_SCREEN (screen), NULL);
|
||||
|
||||
self = g_object_new (META_TYPE_BACKGROUND_ACTOR, NULL);
|
||||
priv = self->priv;
|
||||
|
||||
priv->background = meta_screen_background_get (screen);
|
||||
priv->background->actors = g_slist_prepend (priv->background->actors, self);
|
||||
|
||||
priv->material = meta_create_texture_material (NULL);
|
||||
|
||||
set_texture_on_actor (self);
|
||||
update_wrap_mode_of_actor (self);
|
||||
|
||||
return CLUTTER_ACTOR (self);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_update:
|
||||
* @screen: a #MetaScreen
|
||||
*
|
||||
* Refetches the _XROOTPMAP_ID property for the root window and updates
|
||||
* the contents of the background actor based on that. There's no attempt
|
||||
* to optimize out pixmap values that don't change (since a root pixmap
|
||||
* could be replaced by with another pixmap with the same ID under some
|
||||
* circumstances), so this should only be called when we actually receive
|
||||
* a PropertyNotify event for the property.
|
||||
*/
|
||||
void
|
||||
meta_background_actor_update (MetaScreen *screen)
|
||||
{
|
||||
MetaScreenBackground *background;
|
||||
MetaDisplay *display;
|
||||
MetaCompositor *compositor;
|
||||
Atom type;
|
||||
int format;
|
||||
gulong nitems;
|
||||
gulong bytes_after;
|
||||
guchar *data;
|
||||
Pixmap root_pixmap_id;
|
||||
|
||||
background = meta_screen_background_get (screen);
|
||||
display = meta_screen_get_display (screen);
|
||||
compositor = meta_display_get_compositor (display);
|
||||
|
||||
root_pixmap_id = None;
|
||||
if (!XGetWindowProperty (meta_display_get_xdisplay (display),
|
||||
meta_screen_get_xroot (screen),
|
||||
compositor->atom_x_root_pixmap,
|
||||
0, LONG_MAX,
|
||||
False,
|
||||
AnyPropertyType,
|
||||
&type, &format, &nitems, &bytes_after, &data) &&
|
||||
type != None)
|
||||
{
|
||||
/* Got a property. */
|
||||
if (type == XA_PIXMAP && format == 32 && nitems == 1)
|
||||
{
|
||||
/* Was what we expected. */
|
||||
root_pixmap_id = *(Pixmap *)data;
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
}
|
||||
|
||||
if (root_pixmap_id != None)
|
||||
{
|
||||
CoglHandle texture;
|
||||
|
||||
meta_error_trap_push (display);
|
||||
texture = cogl_texture_pixmap_x11_new (root_pixmap_id, FALSE);
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
if (texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
set_texture (background, texture);
|
||||
cogl_handle_unref (texture);
|
||||
|
||||
background->have_pixmap = True;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
background->have_pixmap = False;
|
||||
set_texture_to_stage_color (background);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_set_visible_region:
|
||||
* @self: a #MetaBackgroundActor
|
||||
* @visible_region: (allow-none): the area of the actor (in allocate-relative
|
||||
* coordinates) that is visible.
|
||||
*
|
||||
* Sets the area of the background that is unobscured by overlapping windows.
|
||||
* This is used to optimize and only paint the visible portions.
|
||||
*/
|
||||
void
|
||||
meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
||||
cairo_region_t *visible_region)
|
||||
{
|
||||
MetaBackgroundActorPrivate *priv;
|
||||
|
||||
g_return_if_fail (META_IS_BACKGROUND_ACTOR (self));
|
||||
|
||||
priv = self->priv;
|
||||
|
||||
if (priv->visible_region)
|
||||
{
|
||||
cairo_region_destroy (priv->visible_region);
|
||||
priv->visible_region = NULL;
|
||||
}
|
||||
|
||||
if (visible_region)
|
||||
{
|
||||
cairo_rectangle_int_t screen_rect = { 0 };
|
||||
meta_screen_get_size (priv->background->screen, &screen_rect.width, &screen_rect.height);
|
||||
|
||||
/* Doing the intersection here is probably unnecessary - MetaWindowGroup
|
||||
* should never compute a visible area that's larger than the root screen!
|
||||
* but it's not that expensive and adds some extra robustness.
|
||||
*/
|
||||
priv->visible_region = cairo_region_create_rectangle (&screen_rect);
|
||||
cairo_region_intersect (priv->visible_region, visible_region);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_background_actor_screen_size_changed:
|
||||
* @screen: a #MetaScreen
|
||||
*
|
||||
* Called by the compositor when the size of the #MetaScreen changes
|
||||
*/
|
||||
void
|
||||
meta_background_actor_screen_size_changed (MetaScreen *screen)
|
||||
{
|
||||
MetaScreenBackground *background = meta_screen_background_get (screen);
|
||||
GSList *l;
|
||||
|
||||
update_wrap_mode (background);
|
||||
|
||||
for (l = background->actors; l; l = l->next)
|
||||
clutter_actor_queue_relayout (l->data);
|
||||
}
|
@@ -21,8 +21,8 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "mutter-plugin.h"
|
||||
#include "mutter-module.h"
|
||||
#include <meta/meta-plugin.h>
|
||||
#include "meta-module.h"
|
||||
|
||||
#include <gmodule.h>
|
||||
|
||||
@@ -32,23 +32,23 @@ enum
|
||||
PROP_PATH,
|
||||
};
|
||||
|
||||
struct _MutterModulePrivate
|
||||
struct _MetaModulePrivate
|
||||
{
|
||||
GModule *lib;
|
||||
gchar *path;
|
||||
GType plugin_type;
|
||||
};
|
||||
|
||||
#define MUTTER_MODULE_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), MUTTER_TYPE_MODULE, MutterModulePrivate))
|
||||
#define META_MODULE_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), META_TYPE_MODULE, MetaModulePrivate))
|
||||
|
||||
G_DEFINE_TYPE (MutterModule, mutter_module, G_TYPE_TYPE_MODULE);
|
||||
G_DEFINE_TYPE (MetaModule, meta_module, G_TYPE_TYPE_MODULE);
|
||||
|
||||
static gboolean
|
||||
mutter_module_load (GTypeModule *gmodule)
|
||||
meta_module_load (GTypeModule *gmodule)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (gmodule)->priv;
|
||||
MutterPluginVersion *info = NULL;
|
||||
MetaModulePrivate *priv = META_MODULE (gmodule)->priv;
|
||||
MetaPluginVersion *info = NULL;
|
||||
GType (*register_type) (GTypeModule *) = NULL;
|
||||
|
||||
if (priv->lib && priv->plugin_type)
|
||||
@@ -57,19 +57,20 @@ mutter_module_load (GTypeModule *gmodule)
|
||||
g_assert (priv->path);
|
||||
|
||||
if (!priv->lib &&
|
||||
!(priv->lib = g_module_open (priv->path, G_MODULE_BIND_LOCAL)))
|
||||
!(priv->lib = g_module_open (priv->path, 0)))
|
||||
{
|
||||
g_warning ("Could not load library [%s (%s)]",
|
||||
priv->path, g_module_error ());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (g_module_symbol (priv->lib, "mutter_plugin_version", (gpointer *)&info) &&
|
||||
g_module_symbol (priv->lib, "mutter_plugin_register_type",
|
||||
(gpointer *)®ister_type) &&
|
||||
if (g_module_symbol (priv->lib, "meta_plugin_version",
|
||||
(gpointer *)(void *)&info) &&
|
||||
g_module_symbol (priv->lib, "meta_plugin_register_type",
|
||||
(gpointer *)(void *)®ister_type) &&
|
||||
info && register_type)
|
||||
{
|
||||
if (info->version_api != METACITY_CLUTTER_PLUGIN_API_VERSION)
|
||||
if (info->version_api != MUTTER_PLUGIN_API_VERSION)
|
||||
g_warning ("Plugin API mismatch for [%s]", priv->path);
|
||||
else
|
||||
{
|
||||
@@ -96,9 +97,9 @@ mutter_module_load (GTypeModule *gmodule)
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_unload (GTypeModule *gmodule)
|
||||
meta_module_unload (GTypeModule *gmodule)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (gmodule)->priv;
|
||||
MetaModulePrivate *priv = META_MODULE (gmodule)->priv;
|
||||
|
||||
g_module_close (priv->lib);
|
||||
|
||||
@@ -107,29 +108,29 @@ mutter_module_unload (GTypeModule *gmodule)
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_dispose (GObject *object)
|
||||
meta_module_dispose (GObject *object)
|
||||
{
|
||||
G_OBJECT_CLASS (mutter_module_parent_class)->dispose (object);
|
||||
G_OBJECT_CLASS (meta_module_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_finalize (GObject *object)
|
||||
meta_module_finalize (GObject *object)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (object)->priv;
|
||||
MetaModulePrivate *priv = META_MODULE (object)->priv;
|
||||
|
||||
g_free (priv->path);
|
||||
priv->path = NULL;
|
||||
|
||||
G_OBJECT_CLASS (mutter_module_parent_class)->finalize (object);
|
||||
G_OBJECT_CLASS (meta_module_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
meta_module_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (object)->priv;
|
||||
MetaModulePrivate *priv = META_MODULE (object)->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
@@ -144,12 +145,12 @@ mutter_module_set_property (GObject *object,
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
meta_module_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (object)->priv;
|
||||
MetaModulePrivate *priv = META_MODULE (object)->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
@@ -163,18 +164,18 @@ mutter_module_get_property (GObject *object,
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_class_init (MutterModuleClass *klass)
|
||||
meta_module_class_init (MetaModuleClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
GTypeModuleClass *gmodule_class = G_TYPE_MODULE_CLASS (klass);
|
||||
|
||||
gobject_class->finalize = mutter_module_finalize;
|
||||
gobject_class->dispose = mutter_module_dispose;
|
||||
gobject_class->set_property = mutter_module_set_property;
|
||||
gobject_class->get_property = mutter_module_get_property;
|
||||
gobject_class->finalize = meta_module_finalize;
|
||||
gobject_class->dispose = meta_module_dispose;
|
||||
gobject_class->set_property = meta_module_set_property;
|
||||
gobject_class->get_property = meta_module_get_property;
|
||||
|
||||
gmodule_class->load = mutter_module_load;
|
||||
gmodule_class->unload = mutter_module_unload;
|
||||
gmodule_class->load = meta_module_load;
|
||||
gmodule_class->unload = meta_module_unload;
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_PATH,
|
||||
@@ -185,22 +186,22 @@ mutter_module_class_init (MutterModuleClass *klass)
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_type_class_add_private (gobject_class, sizeof (MutterModulePrivate));
|
||||
g_type_class_add_private (gobject_class, sizeof (MetaModulePrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_init (MutterModule *self)
|
||||
meta_module_init (MetaModule *self)
|
||||
{
|
||||
MutterModulePrivate *priv;
|
||||
MetaModulePrivate *priv;
|
||||
|
||||
self->priv = priv = MUTTER_MODULE_GET_PRIVATE (self);
|
||||
self->priv = priv = META_MODULE_GET_PRIVATE (self);
|
||||
|
||||
}
|
||||
|
||||
GType
|
||||
mutter_module_get_plugin_type (MutterModule *module)
|
||||
meta_module_get_plugin_type (MetaModule *module)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (module)->priv;
|
||||
MetaModulePrivate *priv = META_MODULE (module)->priv;
|
||||
|
||||
return priv->plugin_type;
|
||||
}
|
@@ -21,37 +21,37 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef MUTTER_MODULE_H_
|
||||
#define MUTTER_MODULE_H_
|
||||
#ifndef META_MODULE_H_
|
||||
#define META_MODULE_H_
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#define MUTTER_TYPE_MODULE (mutter_module_get_type ())
|
||||
#define MUTTER_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MUTTER_TYPE_MODULE, MutterModule))
|
||||
#define MUTTER_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MUTTER_TYPE_MODULE, MutterModuleClass))
|
||||
#define MUTTER_IS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MUTTER_MODULE_TYPE))
|
||||
#define MUTTER_IS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MUTTER_TYPE_MODULE))
|
||||
#define MUTTER_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MUTTER_TYPE_MODULE, MutterModuleClass))
|
||||
#define META_TYPE_MODULE (meta_module_get_type ())
|
||||
#define META_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MODULE, MetaModule))
|
||||
#define META_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MODULE, MetaModuleClass))
|
||||
#define META_IS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_MODULE_TYPE))
|
||||
#define META_IS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_MODULE))
|
||||
#define META_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_MODULE, MetaModuleClass))
|
||||
|
||||
typedef struct _MutterModule MutterModule;
|
||||
typedef struct _MutterModuleClass MutterModuleClass;
|
||||
typedef struct _MutterModulePrivate MutterModulePrivate;
|
||||
typedef struct _MetaModule MetaModule;
|
||||
typedef struct _MetaModuleClass MetaModuleClass;
|
||||
typedef struct _MetaModulePrivate MetaModulePrivate;
|
||||
|
||||
struct _MutterModule
|
||||
struct _MetaModule
|
||||
{
|
||||
GTypeModule parent;
|
||||
|
||||
MutterModulePrivate *priv;
|
||||
MetaModulePrivate *priv;
|
||||
};
|
||||
|
||||
struct _MutterModuleClass
|
||||
struct _MetaModuleClass
|
||||
{
|
||||
GTypeModuleClass parent_class;
|
||||
};
|
||||
|
||||
|
||||
GType mutter_module_get_type (void);
|
||||
GType meta_module_get_type (void);
|
||||
|
||||
GType mutter_module_get_plugin_type (MutterModule *module);
|
||||
GType meta_module_get_plugin_type (MetaModule *module);
|
||||
|
||||
#endif
|
484
src/compositor/meta-plugin-manager.c
Normal file
484
src/compositor/meta-plugin-manager.c
Normal file
@@ -0,0 +1,484 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Intel Corp.
|
||||
*
|
||||
* Author: Tomas Frydrych <tf@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "compositor-private.h"
|
||||
#include "meta-plugin-manager.h"
|
||||
#include <meta/prefs.h>
|
||||
#include <meta/errors.h>
|
||||
#include <meta/workspace.h>
|
||||
#include "meta-module.h"
|
||||
#include "window-private.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
|
||||
static GSList *plugin_types;
|
||||
|
||||
/*
|
||||
* We have one "default plugin manager" that acts for the first screen,
|
||||
* but also can be used before we open any screens, and additional
|
||||
* plugin managers for each screen. (This is ugly. Probably we should
|
||||
* have one plugin manager and only make the plugins per-screen.)
|
||||
*/
|
||||
static MetaPluginManager *default_plugin_manager;
|
||||
|
||||
struct MetaPluginManager
|
||||
{
|
||||
MetaScreen *screen;
|
||||
|
||||
GList /* MetaPlugin */ *plugins; /* TODO -- maybe use hash table */
|
||||
};
|
||||
|
||||
/*
|
||||
* Loads the given plugin.
|
||||
*/
|
||||
void
|
||||
meta_plugin_manager_load (MetaPluginManager *plugin_mgr,
|
||||
const gchar *plugin_name)
|
||||
{
|
||||
const gchar *dpath = MUTTER_PLUGIN_DIR "/";
|
||||
gchar *path;
|
||||
MetaModule *module;
|
||||
GType plugin_type;
|
||||
|
||||
if (g_path_is_absolute (plugin_name))
|
||||
path = g_strdup (plugin_name);
|
||||
else
|
||||
path = g_strconcat (dpath, plugin_name, ".so", NULL);
|
||||
|
||||
module = g_object_new (META_TYPE_MODULE, "path", path, NULL);
|
||||
if (!module || !g_type_module_use (G_TYPE_MODULE (module)))
|
||||
{
|
||||
/* This is fatal under the assumption that a monitoring
|
||||
* process like gnome-session will take over and handle
|
||||
* our untimely exit.
|
||||
*/
|
||||
g_printerr ("Unable to load plugin module [%s]: %s",
|
||||
path, g_module_error());
|
||||
exit (1);
|
||||
}
|
||||
|
||||
plugin_type = meta_module_get_plugin_type (module);
|
||||
meta_plugin_manager_register (plugin_mgr, plugin_type);
|
||||
|
||||
g_type_module_unuse (G_TYPE_MODULE (module));
|
||||
g_free (path);
|
||||
}
|
||||
|
||||
/*
|
||||
* Registers the given plugin type
|
||||
*/
|
||||
void
|
||||
meta_plugin_manager_register (MetaPluginManager *plugin_mgr,
|
||||
GType plugin_type)
|
||||
{
|
||||
MetaPlugin *plugin;
|
||||
|
||||
plugin_types = g_slist_prepend (plugin_types, GSIZE_TO_POINTER (plugin_type));
|
||||
|
||||
plugin = g_object_new (plugin_type, NULL);
|
||||
plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin);
|
||||
}
|
||||
|
||||
void
|
||||
meta_plugin_manager_initialize (MetaPluginManager *plugin_mgr)
|
||||
{
|
||||
GList *iter;
|
||||
|
||||
if (!plugin_mgr->plugins)
|
||||
{
|
||||
/*
|
||||
* If no plugins are specified, load the default plugin.
|
||||
*/
|
||||
meta_plugin_manager_load (plugin_mgr, "default");
|
||||
}
|
||||
|
||||
for (iter = plugin_mgr->plugins; iter; iter = iter->next)
|
||||
{
|
||||
MetaPlugin *plugin = (MetaPlugin*) iter->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
g_object_set (plugin,
|
||||
"screen", plugin_mgr->screen,
|
||||
NULL);
|
||||
|
||||
if (klass->start)
|
||||
klass->start (plugin);
|
||||
}
|
||||
}
|
||||
|
||||
static MetaPluginManager *
|
||||
meta_plugin_manager_new (MetaScreen *screen)
|
||||
{
|
||||
MetaPluginManager *plugin_mgr;
|
||||
|
||||
plugin_mgr = g_new0 (MetaPluginManager, 1);
|
||||
plugin_mgr->screen = screen;
|
||||
|
||||
if (screen)
|
||||
g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", plugin_mgr);
|
||||
|
||||
return plugin_mgr;
|
||||
}
|
||||
|
||||
MetaPluginManager *
|
||||
meta_plugin_manager_get_default (void)
|
||||
{
|
||||
if (!default_plugin_manager)
|
||||
{
|
||||
default_plugin_manager = meta_plugin_manager_new (NULL);
|
||||
}
|
||||
|
||||
return default_plugin_manager;
|
||||
}
|
||||
|
||||
MetaPluginManager *
|
||||
meta_plugin_manager_get (MetaScreen *screen)
|
||||
{
|
||||
MetaPluginManager *plugin_mgr;
|
||||
|
||||
plugin_mgr = g_object_get_data (G_OBJECT (screen), "meta-plugin-manager");
|
||||
if (plugin_mgr)
|
||||
return plugin_mgr;
|
||||
|
||||
if (!default_plugin_manager)
|
||||
meta_plugin_manager_get_default ();
|
||||
|
||||
if (!default_plugin_manager->screen)
|
||||
{
|
||||
/* The default plugin manager is so far unused, we can recycle it */
|
||||
default_plugin_manager->screen = screen;
|
||||
g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", default_plugin_manager);
|
||||
|
||||
return default_plugin_manager;
|
||||
}
|
||||
else
|
||||
{
|
||||
GSList *iter;
|
||||
GType plugin_type;
|
||||
MetaPlugin *plugin;
|
||||
|
||||
plugin_mgr = meta_plugin_manager_new (screen);
|
||||
|
||||
for (iter = plugin_types; iter; iter = iter->next)
|
||||
{
|
||||
plugin_type = (GType)GPOINTER_TO_SIZE (iter->data);
|
||||
plugin = g_object_new (plugin_type, "screen", screen, NULL);
|
||||
plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin);
|
||||
}
|
||||
|
||||
return plugin_mgr;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_plugin_manager_kill_window_effects (MetaPluginManager *plugin_mgr,
|
||||
MetaWindowActor *actor)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MetaPlugin *plugin = l->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!meta_plugin_disabled (plugin)
|
||||
&& klass->kill_window_effects)
|
||||
klass->kill_window_effects (plugin, actor);
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_plugin_manager_kill_switch_workspace (MetaPluginManager *plugin_mgr)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MetaPlugin *plugin = l->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!meta_plugin_disabled (plugin)
|
||||
&& (meta_plugin_features (plugin) & META_PLUGIN_SWITCH_WORKSPACE)
|
||||
&& klass->kill_switch_workspace)
|
||||
klass->kill_switch_workspace (plugin);
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Public method that the compositor hooks into for events that require
|
||||
* no additional parameters.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr,
|
||||
MetaWindowActor *actor,
|
||||
unsigned long event)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
gboolean retval = FALSE;
|
||||
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
|
||||
|
||||
if (display->display_opening)
|
||||
return FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MetaPlugin *plugin = l->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!meta_plugin_disabled (plugin) &&
|
||||
(meta_plugin_features (plugin) & event))
|
||||
{
|
||||
retval = TRUE;
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case META_PLUGIN_MINIMIZE:
|
||||
if (klass->minimize)
|
||||
{
|
||||
meta_plugin_manager_kill_window_effects (
|
||||
plugin_mgr,
|
||||
actor);
|
||||
|
||||
_meta_plugin_effect_started (plugin);
|
||||
klass->minimize (plugin, actor);
|
||||
}
|
||||
break;
|
||||
case META_PLUGIN_MAP:
|
||||
if (klass->map)
|
||||
{
|
||||
meta_plugin_manager_kill_window_effects (
|
||||
plugin_mgr,
|
||||
actor);
|
||||
|
||||
_meta_plugin_effect_started (plugin);
|
||||
klass->map (plugin, actor);
|
||||
}
|
||||
break;
|
||||
case META_PLUGIN_DESTROY:
|
||||
if (klass->destroy)
|
||||
{
|
||||
_meta_plugin_effect_started (plugin);
|
||||
klass->destroy (plugin, actor);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_warning ("Incorrect handler called for event %lu", event);
|
||||
}
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* The public method that the compositor hooks into for maximize and unmaximize
|
||||
* events.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
meta_plugin_manager_event_maximize (MetaPluginManager *plugin_mgr,
|
||||
MetaWindowActor *actor,
|
||||
unsigned long event,
|
||||
gint target_x,
|
||||
gint target_y,
|
||||
gint target_width,
|
||||
gint target_height)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
gboolean retval = FALSE;
|
||||
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
|
||||
|
||||
if (display->display_opening)
|
||||
return FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MetaPlugin *plugin = l->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!meta_plugin_disabled (plugin) &&
|
||||
(meta_plugin_features (plugin) & event))
|
||||
{
|
||||
retval = TRUE;
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case META_PLUGIN_MAXIMIZE:
|
||||
if (klass->maximize)
|
||||
{
|
||||
meta_plugin_manager_kill_window_effects (
|
||||
plugin_mgr,
|
||||
actor);
|
||||
|
||||
_meta_plugin_effect_started (plugin);
|
||||
klass->maximize (plugin, actor,
|
||||
target_x, target_y,
|
||||
target_width, target_height);
|
||||
}
|
||||
break;
|
||||
case META_PLUGIN_UNMAXIMIZE:
|
||||
if (klass->unmaximize)
|
||||
{
|
||||
meta_plugin_manager_kill_window_effects (
|
||||
plugin_mgr,
|
||||
actor);
|
||||
|
||||
_meta_plugin_effect_started (plugin);
|
||||
klass->unmaximize (plugin, actor,
|
||||
target_x, target_y,
|
||||
target_width, target_height);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_warning ("Incorrect handler called for event %lu", event);
|
||||
}
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* The public method that the compositor hooks into for desktop switching.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
meta_plugin_manager_switch_workspace (MetaPluginManager *plugin_mgr,
|
||||
gint from,
|
||||
gint to,
|
||||
MetaMotionDirection direction)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
gboolean retval = FALSE;
|
||||
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
|
||||
|
||||
if (display->display_opening)
|
||||
return FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MetaPlugin *plugin = l->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!meta_plugin_disabled (plugin) &&
|
||||
(meta_plugin_features (plugin) & META_PLUGIN_SWITCH_WORKSPACE))
|
||||
{
|
||||
if (klass->switch_workspace)
|
||||
{
|
||||
retval = TRUE;
|
||||
meta_plugin_manager_kill_switch_workspace (plugin_mgr);
|
||||
|
||||
_meta_plugin_effect_started (plugin);
|
||||
klass->switch_workspace (plugin, from, to, direction);
|
||||
}
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* The public method that the compositor hooks into for desktop switching.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
|
||||
XEvent *xev)
|
||||
{
|
||||
GList *l;
|
||||
gboolean have_plugin_xevent_func;
|
||||
|
||||
if (!plugin_mgr)
|
||||
return FALSE;
|
||||
|
||||
l = plugin_mgr->plugins;
|
||||
|
||||
/* We need to make sure that clutter gets certain events, like
|
||||
* ConfigureNotify on the stage window. If there is a plugin that
|
||||
* provides an xevent_filter function, then it's the responsibility
|
||||
* of that plugin to pass events to Clutter. Otherwise, we send the
|
||||
* event directly to Clutter ourselves.
|
||||
*
|
||||
* What happens if there are two plugins with xevent_filter functions
|
||||
* is undefined; in general, multiple competing plugins are something
|
||||
* we don't support well or care much about.
|
||||
*
|
||||
* FIXME: Really, we should just always handle sending the event to
|
||||
* clutter if a plugin doesn't report the event as handled by
|
||||
* returning TRUE, but it doesn't seem worth breaking compatibility
|
||||
* of the plugin interface right now to achieve this; the way it is
|
||||
* now works fine in practice.
|
||||
*/
|
||||
have_plugin_xevent_func = FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MetaPlugin *plugin = l->data;
|
||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (klass->xevent_filter)
|
||||
{
|
||||
have_plugin_xevent_func = TRUE;
|
||||
if (klass->xevent_filter (plugin, xev) == TRUE)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
if (!have_plugin_xevent_func)
|
||||
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user