Compare commits
1256 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e3c34328ee | ||
|
0e9d34dd9d | ||
|
4597519128 | ||
|
8a7c690d21 | ||
|
07cc8f9787 | ||
|
2a09a76fb0 | ||
|
ddc5001a79 | ||
|
ae53630df3 | ||
|
6f090f3883 | ||
|
b343862f35 | ||
|
c7c9d5d974 | ||
|
10ed8358f9 | ||
|
0be7615056 | ||
|
a0955e225a | ||
|
2ae6f75938 | ||
|
420ec4d24e | ||
|
7bd9e7fa45 | ||
|
e9f6873d8a | ||
|
9dcee3a6ac | ||
|
5fb9e981b7 | ||
|
643114867a | ||
|
879c6acf57 | ||
|
cbbab3adda | ||
|
87f3c2aff0 | ||
|
32d80497cf | ||
|
93061a79a0 | ||
|
7d74ca2372 | ||
|
5d2189a6bb | ||
|
d4b92ad765 | ||
|
9a1f24ddb9 | ||
|
908f114400 | ||
|
53f35d19ed | ||
|
77fd709836 | ||
|
f3d7b6c2e1 | ||
|
94d2f562b8 | ||
|
b68d4e2ae1 | ||
|
8cfc2e1ac7 | ||
|
36bfd90672 | ||
|
dc2618d0f4 | ||
|
fa62fc4240 | ||
|
d81a70b4c6 | ||
|
34957f7282 | ||
|
98fc1110df | ||
|
06cecb946e | ||
|
86061a7680 | ||
|
4584c0b5ec | ||
|
3673ca15e2 | ||
|
b632397022 | ||
|
a19bf7d1e2 | ||
|
57ae0ef0c4 | ||
|
7f39417349 | ||
|
4625b5bb97 | ||
|
bfcf5550cf | ||
|
b672f52bf8 | ||
|
25f2dc1cc8 | ||
|
454f3e15ae | ||
|
83ca3e8a2b | ||
|
f526ad5d6b | ||
|
fecf32f3c6 | ||
|
34ad0aae0f | ||
|
f07ee800a8 | ||
|
47acd98a6b | ||
|
94b4b5c4b1 | ||
|
99a7fdb9bd | ||
|
c3bb69aaed | ||
|
0a92b9772a | ||
|
edf6f80adc | ||
|
87406c1278 | ||
|
c5d7b4d6e7 | ||
|
8c7b452b1f | ||
|
d3ce661865 | ||
|
ab2f70a258 | ||
|
12e2c9cbfb | ||
|
431d849bcd | ||
|
4319c3160b | ||
|
9299056daa | ||
|
81900cdc6d | ||
|
ca1599296c | ||
|
b4bcb46fae | ||
|
591026c65c | ||
|
4b1b3fb12b | ||
|
a089732ba2 | ||
|
f9b1f23b11 | ||
|
4a65b1cb29 | ||
|
b31f4ff67b | ||
|
938396b500 | ||
|
1006b9b2b4 | ||
|
1c27842ab3 | ||
|
0eec6d8189 | ||
|
3f611f7ca2 | ||
|
aaf145feb7 | ||
|
3a6628adea | ||
|
a213ec8467 | ||
|
85bcfc74bc | ||
|
59c6e88311 | ||
|
37c8490abc | ||
|
7f687871b7 | ||
|
da49563c35 | ||
|
b31d74e8ba | ||
|
d65fbacac6 | ||
|
58ebb7e3bc | ||
|
d025f24928 | ||
|
56a82d7cbf | ||
|
655676de7e | ||
|
44ea6d38ac | ||
|
e69bc3efaf | ||
|
e903be2564 | ||
|
b0dd62a90b | ||
|
774f4b4690 | ||
|
3388795df5 | ||
|
59b6740ce5 | ||
|
4f573e54d4 | ||
|
134d271f68 | ||
|
e1452fcda4 | ||
|
edac9e3381 | ||
|
366a602260 | ||
|
45ee641a78 | ||
|
f7370be6a5 | ||
|
2dd845f7e0 | ||
|
8ccb67cb8a | ||
|
0931854b98 | ||
|
9697badf22 | ||
|
679c29069d | ||
|
76b92815b0 | ||
|
e5ed751c1f | ||
|
b84a584995 | ||
|
6035b4ee37 | ||
|
5bd1122a2b | ||
|
cc028458bd | ||
|
b9757404e3 | ||
|
ecc9eab92e | ||
|
6649018303 | ||
|
d7032bf945 | ||
|
e5f473d9b6 | ||
|
ec56f9471c | ||
|
65531c7870 | ||
|
ca387e3261 | ||
|
4a5a4b4cde | ||
|
94d2cdf81d | ||
|
97e051235d | ||
|
c85d6462b5 | ||
|
893f795228 | ||
|
9f426e2c6d | ||
|
8b3b816005 | ||
|
41fb45cd90 | ||
|
793907383a | ||
|
76b3559dfe | ||
|
e51a8d73aa | ||
|
8e2118dc67 | ||
|
cc1e231297 | ||
|
7cf3823bea | ||
|
338c732e5f | ||
|
c646ca611b | ||
|
b79ddd453d | ||
|
5158e408d7 | ||
|
a0aec0b176 | ||
|
0bf579e4b0 | ||
|
75d41ee146 | ||
|
d161a58424 | ||
|
e76cf4097f | ||
|
0092ae1e30 | ||
|
0ed68fd993 | ||
|
69dde233e4 | ||
|
7f3fe72503 | ||
|
0b5809b07d | ||
|
ebd7d029cf | ||
|
04c1df671d | ||
|
862fc14744 | ||
|
eeff96e1db | ||
|
eea9e9122e | ||
|
537d31521b | ||
|
73989239b9 | ||
|
67a12518bd | ||
|
0cc9ed3ae9 | ||
|
72c44056b2 | ||
|
5891f28548 | ||
|
efe9189d76 | ||
|
108174e040 | ||
|
782889079f | ||
|
de4772bf1e | ||
|
30269e7dde | ||
|
828fa2e91d | ||
|
39cb8ca758 | ||
|
d60117236f | ||
|
4b30e5f6f2 | ||
|
22a6f63230 | ||
|
b7b309f1d4 | ||
|
64bf58e2ea | ||
|
5ca1b6a3e7 | ||
|
6813a4c98e | ||
|
09e3ec218e | ||
|
2122882f37 | ||
|
21b5cd056e | ||
|
97a528c5d3 | ||
|
bca6fd7f67 | ||
|
5307cb1fe0 | ||
|
21b6e3b74b | ||
|
426b99ec73 | ||
|
b5ef87f99f | ||
|
57941187dd | ||
|
10776c0f52 | ||
|
5ea7f82c2f | ||
|
5ef500e916 | ||
|
5c774ceccc | ||
|
16661287c3 | ||
|
c8015d121d | ||
|
8a88b7fb07 | ||
|
cebd738569 | ||
|
71e4f016dd | ||
|
6616969582 | ||
|
c5325049f6 | ||
|
b7c45229d0 | ||
|
8a7e0fe8ff | ||
|
cb6c0ecffe | ||
|
865733b151 | ||
|
67f6808f6d | ||
|
e0a7eb4cd1 | ||
|
316e7296e4 | ||
|
da2e81fbdb | ||
|
4372f80a6b | ||
|
93ccda449f | ||
|
9396a8b036 | ||
|
213b5bd5dd | ||
|
d29766fad5 | ||
|
930ab34755 | ||
|
25c79797d1 | ||
|
f07d350628 | ||
|
5c9f9a2aff | ||
|
69da78094c | ||
|
163fe968f2 | ||
|
d702e0bb56 | ||
|
2c66f77be7 | ||
|
15f21d1467 | ||
|
d870c1497d | ||
|
7a1d8ffa19 | ||
|
a2cc7999c3 | ||
|
8e623c55c4 | ||
|
834a06612a | ||
|
d63a96c509 | ||
|
3dc3333d99 | ||
|
c46404cbbf | ||
|
b2dd3acd08 | ||
|
da8fb3b112 | ||
|
065e139126 | ||
|
25b7b1603b | ||
|
3a6416f1b3 | ||
|
194beff585 | ||
|
3d0c9a78e7 | ||
|
77d1c8a846 | ||
|
b7eaa606bc | ||
|
b577acb584 | ||
|
9f9b0129f0 | ||
|
c1a669a9a2 | ||
|
14edc8d9fa | ||
|
41ab799c37 | ||
|
d7b79251e1 | ||
|
d427026b5b | ||
|
49f2f71e61 | ||
|
8af7a922e3 | ||
|
a263904386 | ||
|
e0f8bd5c28 | ||
|
8a78a7a3bf | ||
|
5c66a39c0c | ||
|
48f569f327 | ||
|
a137928496 | ||
|
8285bc794b | ||
|
fa51da6393 | ||
|
e708570703 | ||
|
d63d5c229b | ||
|
9566d14940 | ||
|
121219e539 | ||
|
2c84f96d46 | ||
|
a0fb433fd2 | ||
|
8eeb955746 | ||
|
fba0195977 | ||
|
d78a59dfed | ||
|
e7727a4b82 | ||
|
f513aa5f8b | ||
|
ed66251c10 | ||
|
7b425eef0e | ||
|
2a5da4b12e | ||
|
2e1bfefde6 | ||
|
cb921ac21e | ||
|
37fc796c9c | ||
|
384a80afbb | ||
|
72ea4095c9 | ||
|
eab4d059f1 | ||
|
b57f072c22 | ||
|
b1050a555a | ||
|
73d9a142a8 | ||
|
be97fb5d03 | ||
|
ad8d43667e | ||
|
c55e39a640 | ||
|
cd1b8419dc | ||
|
af780758e9 | ||
|
dea4ca177a | ||
|
a7d41b9f99 | ||
|
aabae3d500 | ||
|
499f9f9370 | ||
|
54b4540d32 | ||
|
5a1cc6497e | ||
|
03d27d222d | ||
|
694a07bfec | ||
|
84b5d8f50e | ||
|
b509d80b9f | ||
|
2941169b80 | ||
|
33edfe65cf | ||
|
6b8c6db53d | ||
|
9ea87bd5a3 | ||
|
5aefc3601e | ||
|
901690e77f | ||
|
c58781521d | ||
|
32d4dfdaf8 | ||
|
91d66c6654 | ||
|
10d3c7ec8d | ||
|
4b846fd9d7 | ||
|
6d383f0a9b | ||
|
126a5daa53 | ||
|
cc1062b423 | ||
|
2f107332fd | ||
|
cdeee6bffb | ||
|
8126ce3a40 | ||
|
41efd8b809 | ||
|
c2253f2507 | ||
|
5564609c99 | ||
|
be8c021c7f | ||
|
e3e5a2bf33 | ||
|
8cc9b6c705 | ||
|
d8cc3eed82 | ||
|
95a37306ff | ||
|
d5cbeeef99 | ||
|
d726cbc5a9 | ||
|
c51971f37c | ||
|
7c8e4b2577 | ||
|
0fb493674a | ||
|
2cafa29b92 | ||
|
7911dd2134 | ||
|
2b8276c416 | ||
|
b4224653c9 | ||
|
6b04bbcf93 | ||
|
c0620fbafb | ||
|
986491fcaa | ||
|
67362776c6 | ||
|
5fff035bff | ||
|
8a6b71e496 | ||
|
1d69e8282b | ||
|
3736e2782d | ||
|
a37e63aecc | ||
|
8471160d23 | ||
|
2f9908fd07 | ||
|
8dc5668ff6 | ||
|
df23a0ec3a | ||
|
49f2ab6677 | ||
|
5f48f0f973 | ||
|
a005dfea72 | ||
|
30a764b4e3 | ||
|
14ec802dfd | ||
|
ca18d920c1 | ||
|
229a5a1d31 | ||
|
56d395581b | ||
|
b67d763dea | ||
|
e9b4ffa5b0 | ||
|
cedc6fc539 | ||
|
6246535d5b | ||
|
a22d09af91 | ||
|
42c8bd045a | ||
|
929c12836c | ||
|
42b5fddadb | ||
|
cfbf9ffa61 | ||
|
3618573f83 | ||
|
e8f4b641b9 | ||
|
38b6523235 | ||
|
2187ca7146 | ||
|
53cec746df | ||
|
be682d69b0 | ||
|
81181b3dad | ||
|
e5683ed537 | ||
|
7ba8a2d98e | ||
|
85c63d9a62 | ||
|
a3df283fa3 | ||
|
f8ce19f33b | ||
|
9280b05b9f | ||
|
0a105f5b83 | ||
|
b882606bf8 | ||
|
5af9cf7e9b | ||
|
e1c9658d34 | ||
|
11b42442aa | ||
|
129b841c47 | ||
|
407fbba876 | ||
|
94c333f8a0 | ||
|
a04dc4cd69 | ||
|
f50c06b5fe | ||
|
c5955bbc74 | ||
|
55ce058dc5 | ||
|
1250725930 | ||
|
3a22a65549 | ||
|
fcb4b80194 | ||
|
edb65a3d14 | ||
|
6f699fa949 | ||
|
98d0113460 | ||
|
86237c09ff | ||
|
274c0cc1a6 | ||
|
5357575947 | ||
|
61d5e1bd13 | ||
|
46f6a77a6c | ||
|
7cd95632de | ||
|
f480a232a8 | ||
|
63b4fe073b | ||
|
5bd51cf27d | ||
|
07f36e2184 | ||
|
a4dec0503c | ||
|
2ff346f3fd | ||
|
c23ded9f55 | ||
|
b64ad3bbec | ||
|
7d3ea11331 | ||
|
5cec99f599 | ||
|
80255955c7 | ||
|
7e40957a5e | ||
|
e59d99e344 | ||
|
68f9c46559 | ||
|
54a8eabf64 | ||
|
97c6c46b18 | ||
|
f11c57ed5e | ||
|
734c6d6d8c | ||
|
0b6cc2019f | ||
|
706c842d56 | ||
|
40af0116fb | ||
|
a5c71dec29 | ||
|
8bccf661d4 | ||
|
3eb5f9b99b | ||
|
37fbb89a26 | ||
|
6508f7411a | ||
|
0ba4b655c0 | ||
|
2835b999f8 | ||
|
10be4b5a6e | ||
|
321232e005 | ||
|
a57e25c304 | ||
|
a849341e3a | ||
|
7d64667c90 | ||
|
7407ce97ae | ||
|
ebd5fbc1cf | ||
|
06471e66b9 | ||
|
47d47b290e | ||
|
ff12986452 | ||
|
d6388dfc97 | ||
|
ffed9ac679 | ||
|
42f7dba972 | ||
|
d1b1f4ad3f | ||
|
5116bb49d8 | ||
|
e6f2e59fe5 | ||
|
0f5d6e9831 | ||
|
e744adbe32 | ||
|
0ee4286ff2 | ||
|
f8bde01838 | ||
|
f98f3a046b | ||
|
f293b5ef60 | ||
|
b2b48e7a64 | ||
|
8123065122 | ||
|
01a3835641 | ||
|
50430263c9 | ||
|
fd48e88fcc | ||
|
c32ba2efad | ||
|
0c144bcfb5 | ||
|
ea1a12763b | ||
|
f0cb618fd7 | ||
|
2d0552b74d | ||
|
cb784482b7 | ||
|
44c387f74c | ||
|
cccc676bdd | ||
|
87f5205c8e | ||
|
de8ccf8007 | ||
|
aee4319640 | ||
|
c8345ac4b1 | ||
|
a81dd8400e | ||
|
0298b69f12 | ||
|
8a463486c9 | ||
|
63e3562bea | ||
|
28e17f4379 | ||
|
3ea780bfe1 | ||
|
49d04959d2 | ||
|
4461c28d0a | ||
|
aab3a13c35 | ||
|
04bc8c6aef | ||
|
573e15d8a7 | ||
|
9627e8e862 | ||
|
b4efcb049a | ||
|
24dddb3043 | ||
|
e7bf640b21 | ||
|
5f8ca2e66a | ||
|
076298a71b | ||
|
e577d1c1b6 | ||
|
b6c074b768 | ||
|
332fcefbe0 | ||
|
a65ffc1b08 | ||
|
e0b528125b | ||
|
2cface3adb | ||
|
daf6a01d1f | ||
|
33f46ac49f | ||
|
7ce6d404e8 | ||
|
efc6565076 | ||
|
15902b31d9 | ||
|
4d820c01f0 | ||
|
2a5157b1df | ||
|
07bc3302fc | ||
|
1741a99b93 | ||
|
9048261ccd | ||
|
9c330d3114 | ||
|
37be41c8ca | ||
|
023494813a | ||
|
8d9093c70b | ||
|
1fd5ec42c7 | ||
|
c58cb065d2 | ||
|
3d0dbf5319 | ||
|
87bc3dc4fd | ||
|
076119eda7 | ||
|
5f176df711 | ||
|
2de11e9cae | ||
|
b11baa03d1 | ||
|
c795f87c2f | ||
|
28a3d36052 | ||
|
eaf1220d36 | ||
|
5e95a23b76 | ||
|
5aee42ce1c | ||
|
a8cf08531f | ||
|
16020e849a | ||
|
8c7e12ee0a | ||
|
bf631bc323 | ||
|
c0d0ce935b | ||
|
eabf884352 | ||
|
e2e12bfb8f | ||
|
560f1e7a64 | ||
|
f35a5c96cc | ||
|
10e854f782 | ||
|
79010ba8b3 | ||
|
3dfc710c30 | ||
|
7bf6b52c56 | ||
|
130dfee8a1 | ||
|
2e0060effa | ||
|
bfd6aa9008 | ||
|
43cd8b5052 | ||
|
09d8a1b1b5 | ||
|
162ce7dacb | ||
|
405c308552 | ||
|
805c6adf44 | ||
|
760e5e0b40 | ||
|
89162d4ac1 | ||
|
fd570510ae | ||
|
ae1ca01f97 | ||
|
752f8941c0 | ||
|
a7aa573373 | ||
|
df8a020776 | ||
|
c7b29cd8ac | ||
|
fcbdb5da1c | ||
|
65a5db9166 | ||
|
a1957981ee | ||
|
9e5f1f4a4a | ||
|
55724695ce | ||
|
34af3e2a0d | ||
|
2b5b537f9e | ||
|
55e0d13615 | ||
|
23d0960389 | ||
|
efeb245066 | ||
|
53cb04cdc7 | ||
|
0fea602ec9 | ||
|
73745fe94e | ||
|
a911a13eed | ||
|
68af0e23c5 | ||
|
1f2dd7a8cf | ||
|
72bee09a8c | ||
|
0446069a3f | ||
|
b97530a327 | ||
|
94d531602b | ||
|
a0df0592cb | ||
|
3c5eadb988 | ||
|
c6327c6a74 | ||
|
e739c979ce | ||
|
e19ef66d11 | ||
|
44311dfbe1 | ||
|
efebc94ecf | ||
|
e9f581e450 | ||
|
cb26488cc1 | ||
|
8891505584 | ||
|
f4664ce701 | ||
|
e190a20be7 | ||
|
58fad0a138 | ||
|
6deef7148f | ||
|
b3b59c555c | ||
|
933d74ec81 | ||
|
0ad6656b34 | ||
|
b847a13f77 | ||
|
cabb46ccdc | ||
|
6aacd5c1b9 | ||
|
17bbf1a6a5 | ||
|
ddcc69dd55 | ||
|
e38140adb8 | ||
|
8b7aa4f429 | ||
|
f3fcfdbd7f | ||
|
63fca01cfc | ||
|
aa0a8be796 | ||
|
f751d58ec5 | ||
|
f3d8673913 | ||
|
4e2f271038 | ||
|
5665f77a99 | ||
|
0c08892570 | ||
|
d349ce4983 | ||
|
20b5ded557 | ||
|
c3242b1080 | ||
|
c4b2420bd8 | ||
|
1fdcd73be2 | ||
|
9859e4c800 | ||
|
c96609ff8a | ||
|
473c5d53bf | ||
|
78cd7b057d | ||
|
dd5b1c9335 | ||
|
0b044491a1 | ||
|
0fed338255 | ||
|
9ddbf96e2a | ||
|
4650c2d22c | ||
|
bf7cb9024e | ||
|
4a8625b5fe | ||
|
113c97d5f2 | ||
|
b4118978df | ||
|
f535b931a8 | ||
|
25e7ee4cb7 | ||
|
f94357ebe8 | ||
|
4f4085ada4 | ||
|
857cf0d75c | ||
|
52d6b66329 | ||
|
478dab3ecd | ||
|
8e38f554e3 | ||
|
cae850afd2 | ||
|
3400931fb3 | ||
|
a58b71f15a | ||
|
7f99225953 | ||
|
662b590a0b | ||
|
7e2f334d41 | ||
|
098a03ef81 | ||
|
488ed24fe9 | ||
|
71d492ea6f | ||
|
f1d2fce121 | ||
|
bd248f9df7 | ||
|
e9d9ae44da | ||
|
2a86f44038 | ||
|
5795a59547 | ||
|
e112fa3d96 | ||
|
92fc80f90a | ||
|
16ade07284 | ||
|
63404476b5 | ||
|
5fe52ce014 | ||
|
b0356547ef | ||
|
553881fcc7 | ||
|
74a2a1fe26 | ||
|
f19552dbb6 | ||
|
7cbdedfabd | ||
|
1a144e4b58 | ||
|
1f123518dc | ||
|
3e303b7910 | ||
|
091b55fc8a | ||
|
18f863d70a | ||
|
ba47397def | ||
|
4ec71c2541 | ||
|
0f509a20be | ||
|
39c7d8b1c7 | ||
|
8e6edd2793 | ||
|
467e40b6c9 | ||
|
c1c9f7a587 | ||
|
b397ae55e7 | ||
|
7e672a7bab | ||
|
3e82e98057 | ||
|
50a5852df8 | ||
|
a8faf271b9 | ||
|
be2b2906b0 | ||
|
ae8fed98cf | ||
|
919d1ae985 | ||
|
1f19619df0 | ||
|
3f7a98c4c1 | ||
|
6fbc12cddd | ||
|
8d25e9c4ef | ||
|
82ea97945a | ||
|
a58016e64e | ||
|
bfafa8c1f3 | ||
|
e6cad63983 | ||
|
7514c4ff66 | ||
|
5be38a3b02 | ||
|
90354ff788 | ||
|
e79e408baa | ||
|
8969c51976 | ||
|
a06e5c6e61 | ||
|
2090a8b59e | ||
|
acd319da16 | ||
|
4e145419e7 | ||
|
a28744f34b | ||
|
bca4665e36 | ||
|
28a9c8855b | ||
|
3f4948eb39 | ||
|
7ac839fad6 | ||
|
d38272e67a | ||
|
904a6da4df | ||
|
a66e5bb100 | ||
|
cbc84a25d4 | ||
|
e661afc1cf | ||
|
f7109daa59 | ||
|
cc5a737f21 | ||
|
4a26fca3b7 | ||
|
09cb50ce4b | ||
|
b4bbba2d37 | ||
|
25d861f7e0 | ||
|
62fa87e272 | ||
|
2003b7bfae | ||
|
6c67393d88 | ||
|
7e64373340 | ||
|
17890b5d8e | ||
|
2aec255fcd | ||
|
ffae75bc34 | ||
|
d4b36a7d4c | ||
|
ba5901168d | ||
|
05898dc06c | ||
|
12492b7084 | ||
|
acb74e6ace | ||
|
ff890596c7 | ||
|
0a59e3581b | ||
|
71b843464b | ||
|
298e933373 | ||
|
b232414407 | ||
|
049d66a936 | ||
|
dbbc5f457d | ||
|
b04471e693 | ||
|
cb5b350b66 | ||
|
419d0f036c | ||
|
f6abd0cb55 | ||
|
f543ba5477 | ||
|
79f85e92b0 | ||
|
42041f3663 | ||
|
1c9754f02f | ||
|
7c34c27d3e | ||
|
97fb610569 | ||
|
59a62b8552 | ||
|
20a2342de1 | ||
|
006aa1196c | ||
|
b05d19ebda | ||
|
12b9dc6cc3 | ||
|
1abe1cfef1 | ||
|
2b3b0403fe | ||
|
e5e172b69a | ||
|
acc625cd20 | ||
|
7ac70efecd | ||
|
7d000f97f2 | ||
|
23d903e0eb | ||
|
e862909a1b | ||
|
f3ea74df83 | ||
|
598544e422 | ||
|
95eab61130 | ||
|
d0ec5dacaf | ||
|
9ff06b8a2f | ||
|
96d55e3ffb | ||
|
dd9539e93f | ||
|
996590deeb | ||
|
05c24c418e | ||
|
95bd26d6cd | ||
|
2b211360a6 | ||
|
b697a2dd7e | ||
|
e96c1301d3 | ||
|
90c1f1125d | ||
|
4782f43007 | ||
|
f99d65b8d3 | ||
|
278a8eace5 | ||
|
9e011c16b1 | ||
|
f9c48e5e1f | ||
|
60fdd7fa78 | ||
|
012d01f5c7 | ||
|
10f614e4a3 | ||
|
2b430e15dd | ||
|
787260bae6 | ||
|
d3377424ce | ||
|
d447bfb875 | ||
|
10611e379e | ||
|
a815ce84d2 | ||
|
10e5f914d7 | ||
|
62edebc451 | ||
|
bf370d4102 | ||
|
e8b18dddae | ||
|
e4acd03c02 | ||
|
29f0c3dcf9 | ||
|
6b243592c6 | ||
|
f66af4b9f8 | ||
|
4138d08227 | ||
|
6a82e60dc2 | ||
|
63e16cf7e3 | ||
|
8fdfc5beaf | ||
|
9c686151c1 | ||
|
7cf8ec8f96 | ||
|
4af5d94c52 | ||
|
11f36a6b71 | ||
|
e96a8532d4 | ||
|
ff64385e0d | ||
|
022fba49d2 | ||
|
8ecaee041d | ||
|
ebb42f0227 | ||
|
d87059b16f | ||
|
a9d360b1bd | ||
|
566c9f0d02 | ||
|
90bf7ca1ce | ||
|
62d0c54d03 | ||
|
7ba4b0b980 | ||
|
84c3e6df70 | ||
|
099dcc9ccf | ||
|
038682b6b0 | ||
|
65089be0a6 | ||
|
456d22bf6a | ||
|
b9e4a5da60 | ||
|
0cc17d8c85 | ||
|
a8f40acb9a | ||
|
f2d30fd573 | ||
|
aec018d627 | ||
|
5acfd1305f | ||
|
93f16b945c | ||
|
c375b29602 | ||
|
a4c4dcf1fa | ||
|
7bf868c498 | ||
|
b06104ecf6 | ||
|
0d45fb6204 | ||
|
a9ecc9b88e | ||
|
0bb4cc20b5 | ||
|
3d24258692 | ||
|
c066d4efe7 | ||
|
4ed24aa859 | ||
|
be6e8516b4 | ||
|
354668568e | ||
|
479005909c | ||
|
64d514cfc7 | ||
|
a11204394f | ||
|
134d0e96dc | ||
|
a42fe6344f | ||
|
411774bd5b | ||
|
773623a6b8 | ||
|
bbc0d9ba17 | ||
|
76872115fd | ||
|
711a1ba259 | ||
|
c236c91de1 | ||
|
7b6b360357 | ||
|
51fe880533 | ||
|
fb1f4b3c96 | ||
|
dfc4a052de | ||
|
4856854e17 | ||
|
979aa38318 | ||
|
9f796716f3 | ||
|
d29f86c7ba | ||
|
5f71d65914 | ||
|
b33352a426 | ||
|
40c9ec24ad | ||
|
2089a3c929 | ||
|
0073b0da44 | ||
|
8893e9bbaa | ||
|
f0d0b75753 | ||
|
28e8395182 | ||
|
3d511e9ef0 | ||
|
fd95fe304c | ||
|
36aa3a25eb | ||
|
4d0f22f36e | ||
|
d147ab0e28 | ||
|
3d5c16d284 | ||
|
285ae92852 | ||
|
ed3dca6cb0 | ||
|
3244d34c57 | ||
|
fd05688c97 | ||
|
41a7038be1 | ||
|
7e6c3a1798 | ||
|
dfdaadcf05 | ||
|
c0ffcbd407 | ||
|
213eca3074 | ||
|
de02f09465 | ||
|
59e4555215 | ||
|
a0a2b8ae9d | ||
|
abc3d9aaf6 | ||
|
48e1867aa3 | ||
|
dbfbef8684 | ||
|
bccf5c1330 | ||
|
d2c7639d3c | ||
|
cfcadaaf7f | ||
|
fd759155b3 | ||
|
0a3f59b0f6 | ||
|
1548cc5c2f | ||
|
29af084d11 | ||
|
0a74a89f38 | ||
|
cb2c72b7bb | ||
|
b43dd41cc2 | ||
|
3fc350abc5 | ||
|
a14a92b017 | ||
|
19f1c54856 | ||
|
9982260c51 | ||
|
b4f551b49c | ||
|
75240c6686 | ||
|
dc25cbf0ee | ||
|
9dd278aa98 | ||
|
59b06567fc | ||
|
53c2017538 | ||
|
a70a12db15 | ||
|
9a417e54dc | ||
|
c30320111e | ||
|
54a35e162f | ||
|
9dfb90c94e | ||
|
105f0745b7 | ||
|
362d4f5a7c | ||
|
ae553500c3 | ||
|
31cb11d152 | ||
|
8f7c7de8d4 | ||
|
a03924ea0e | ||
|
246082803d | ||
|
488362bd6d | ||
|
8ad56b88e7 | ||
|
69022e9b09 | ||
|
19e90e210f | ||
|
f4e6a887f9 | ||
|
764ccb5946 | ||
|
f5a690a5fc | ||
|
ecfada11ef | ||
|
01432f796d | ||
|
223724c043 | ||
|
1b0a746fbb | ||
|
664cc0c58f | ||
|
fdd55f4af4 | ||
|
5e4efe2de8 | ||
|
18050acb14 | ||
|
08284e53e6 | ||
|
80a5a0dfc4 | ||
|
3755d4edfb | ||
|
7fddffb94b | ||
|
2b4fe1b19e | ||
|
247b802109 | ||
|
3405ed347e | ||
|
7f438ac104 | ||
|
5f81203659 | ||
|
c3fa5c6a98 | ||
|
704213557d | ||
|
b209eb6841 | ||
|
fb00ec7f37 | ||
|
3da6f5822a | ||
|
e4ecc68b4e | ||
|
a16f0cb060 | ||
|
32fe805c19 | ||
|
e14269a7e8 | ||
|
d66a7689c2 | ||
|
3bf069f84c | ||
|
d472ff1375 | ||
|
714ef36829 | ||
|
60d1222bca | ||
|
192c0ddfdf | ||
|
48a0c9261e | ||
|
d3b0592298 | ||
|
dec825bbf4 | ||
|
451ba42638 | ||
|
7c05c71fa3 | ||
|
84357b6fc3 | ||
|
ba2bdd9e4e | ||
|
ff7dec6d78 | ||
|
e2e44ff425 | ||
|
481d7f9cca | ||
|
4d84923f64 | ||
|
3f79768ef6 | ||
|
bbbb2cfbd7 | ||
|
5b38895ca7 | ||
|
6273a3efc3 | ||
|
ee8628b1f5 | ||
|
403d147118 | ||
|
6acc5d4498 | ||
|
207d1fa22f | ||
|
5404e92058 | ||
|
1a279e0b8e | ||
|
5e0e34e7da | ||
|
881cd55424 | ||
|
3568cf2028 | ||
|
a39c34bbde | ||
|
25b4b05f77 | ||
|
2450c440a8 | ||
|
46b2854004 | ||
|
404910dd67 | ||
|
732678303d | ||
|
2254a505d5 | ||
|
5799c32120 | ||
|
eed598113e | ||
|
ced1a80c19 | ||
|
fe75a3f639 | ||
|
e81e65a8c2 | ||
|
04f7e8bf92 | ||
|
756fab832a | ||
|
cafe822c1a | ||
|
2dfe996cf6 | ||
|
752125a479 | ||
|
b6c719e920 | ||
|
cb392256bf | ||
|
26d7b2cb34 | ||
|
01b49bffe5 | ||
|
b3a1b29aa9 | ||
|
c3c558a150 | ||
|
6458f99cf5 | ||
|
ef97c6e160 | ||
|
7c448ca64e | ||
|
c7c640aa22 | ||
|
7b3a099aaa | ||
|
9485bde593 | ||
|
7399346c57 | ||
|
4dd34ebe90 | ||
|
bc957b879e | ||
|
83db1d511f | ||
|
cc35ebf4d1 | ||
|
b680980984 | ||
|
f9bfdfb249 | ||
|
5e70a7172c | ||
|
6c69e0042c | ||
|
4f65409807 | ||
|
f4116abd1b | ||
|
23af5d38ca | ||
|
d5f9a5b7da | ||
|
ac102bb805 | ||
|
5b80a74567 | ||
|
82f69b5827 | ||
|
3211b2d5d5 | ||
|
22c56c4e56 | ||
|
98e68bb934 | ||
|
7ee749cf54 | ||
|
ad7a35f27e | ||
|
c3a98dc13f | ||
|
3ccfb536a0 | ||
|
1f8e1dc459 | ||
|
ebe41c5178 | ||
|
bd565de7e2 | ||
|
064dfef7b4 | ||
|
a11e2788df | ||
|
64b4a8a93d | ||
|
0340d3094e | ||
|
455bf81bf2 | ||
|
142d1e4595 | ||
|
33a8a08e5d | ||
|
54066a0e51 | ||
|
ca409e70e8 | ||
|
795fefb1bb | ||
|
33c5d8b519 | ||
|
e529b6e77b | ||
|
3f7f0cfdb2 | ||
|
c1f919b738 | ||
|
a5e9c94009 | ||
|
406249d62d | ||
|
66730803e3 | ||
|
0e6486054a | ||
|
462b5cd576 | ||
|
e9a7c90880 | ||
|
4317b035cd | ||
|
6c87933f29 | ||
|
ec6a025679 | ||
|
da376d1fb8 | ||
|
c79863f837 | ||
|
69d0a2ad47 | ||
|
f7b90812a7 | ||
|
f4feaae718 | ||
|
aa21cc6b63 | ||
|
05302e4a45 | ||
|
4ad0508c2a | ||
|
7fd6381e9e | ||
|
84881fc428 | ||
|
a4178fef62 | ||
|
9c76d9a93b | ||
|
24c89d0a20 | ||
|
9bbd67c291 | ||
|
ff9dcb6ce1 | ||
|
6f0aedf037 | ||
|
b95ddc9dfb | ||
|
ed3d85bc8e | ||
|
e644e163bc | ||
|
17ef62753f | ||
|
6c1d4eecad | ||
|
6d1da582d1 | ||
|
844b6c9002 | ||
|
4e090e970d | ||
|
3201545f25 | ||
|
b05bdfcc7e | ||
|
8ac67e3aa3 | ||
|
c36dd3e818 | ||
|
14bb26cefb | ||
|
103e07839d | ||
|
085b811874 | ||
|
9c328f3709 | ||
|
29aebf0933 | ||
|
a09cb48cac | ||
|
a84a6035a9 | ||
|
fb3306acc6 | ||
|
8e9ccbb93d | ||
|
af8c5f324d | ||
|
6b6a7d5594 | ||
|
2944740de6 | ||
|
92fc660b1f | ||
|
7140270ce1 | ||
|
d645b405bb | ||
|
c1a9abe971 | ||
|
1c2de9139f | ||
|
3f429febb8 | ||
|
d788c0dbda | ||
|
5986343c92 | ||
|
a98dd9d05b | ||
|
8cb59dc4c3 | ||
|
0ad558e0b8 | ||
|
30172cd487 | ||
|
515c8ddf7a | ||
|
2cceb4fcdd | ||
|
010e0b2049 | ||
|
d9c8ca9206 | ||
|
ff260986c8 | ||
|
48e54022b1 | ||
|
feb0f4117d | ||
|
a87da5849c | ||
|
0d439be5fa | ||
|
b5e76a3b3e | ||
|
dac1d7d549 | ||
|
363a7ff0aa | ||
|
3c99eca667 | ||
|
180586ee3f | ||
|
7f00f1ccfe | ||
|
68f36c1f4d | ||
|
adb5206ed8 | ||
|
fbfa46f5be | ||
|
cc8670f3b4 | ||
|
81e1af20cc | ||
|
5a69082cff | ||
|
671f3e8771 | ||
|
287cfe5fa7 | ||
|
70f8444785 | ||
|
7a35b0ac59 | ||
|
ada1b9de5f | ||
|
4d7eab891c | ||
|
8489c25e4b | ||
|
3d24b31bf1 | ||
|
4b278c5011 | ||
|
e59aa6844b | ||
|
8c15c4968b | ||
|
102de038ac | ||
|
0400cc59c9 | ||
|
3f0a6dd294 | ||
|
0801f12bf4 | ||
|
529066581e | ||
|
970a20893c | ||
|
7c17555510 | ||
|
88a95f2e63 | ||
|
bc1253cfb9 | ||
|
08d6ead36b | ||
|
91b6fee25c | ||
|
c6834093ef | ||
|
7df7dcffc0 | ||
|
3c4a90ec8c | ||
|
d9c455a5e6 | ||
|
41ba392b96 | ||
|
b1cc1989d8 | ||
|
762f6b3c67 | ||
|
c3ed6f24ba | ||
|
5dd48540e6 | ||
|
4b4d1cbbf3 | ||
|
75366c37d0 | ||
|
6968115e73 | ||
|
67bb1dfd1c | ||
|
1f5fa3e1cc | ||
|
8fdda9deb0 | ||
|
e3affbf06b | ||
|
f794fb8a98 | ||
|
0945b18831 | ||
|
f6a23551de | ||
|
6666d1d07d | ||
|
f04282ad5f | ||
|
4725de5dc3 | ||
|
047f7c41a5 | ||
|
0f2c2d3f1c | ||
|
3ba0917dfd | ||
|
0e0f5c0627 | ||
|
166b833585 | ||
|
c5e12cd438 | ||
|
2db94526eb | ||
|
592273ee48 | ||
|
df92df5a93 | ||
|
d0ae64cd87 | ||
|
f2dadd8eee | ||
|
c715a56eb3 | ||
|
c4d63e1a50 | ||
|
bfd398ac1d | ||
|
43cb85e99d | ||
|
1cc441a718 | ||
|
23b6f0688b | ||
|
65e9db4dcb | ||
|
44bcc4b6c5 | ||
|
dcd04598d4 | ||
|
6ce0205ab3 | ||
|
efaa3b2625 | ||
|
6979fdbb5a | ||
|
6828c42322 | ||
|
6aa2919eed | ||
|
59a1962d19 | ||
|
3788712b16 | ||
|
ad11529ea9 | ||
|
1caaa224a2 | ||
|
835f8caf47 | ||
|
06cf37d16b | ||
|
ed4cb2ae10 | ||
|
da29e93a55 | ||
|
1d93c586ad | ||
|
d91d1b4358 | ||
|
dc021fe26e | ||
|
7a7e2e13f5 | ||
|
bf4ebf4da1 | ||
|
b4d782e068 | ||
|
e509cb2328 | ||
|
c61193c0e9 | ||
|
265e6b8237 | ||
|
7d9f158f84 | ||
|
d35502c1c7 | ||
|
fe72cf4602 | ||
|
27a42cb523 | ||
|
c92e9360fc | ||
|
28a0cf8b20 | ||
|
ca4ac67c53 | ||
|
8b97fac2c5 | ||
|
7e57051216 | ||
|
2349f5d1d8 | ||
|
066db95347 | ||
|
ba4cf07234 | ||
|
73eaa240a1 | ||
|
e5be4ef305 | ||
|
2ff48e43c8 | ||
|
9bea858f1a | ||
|
4332c8a413 | ||
|
64fa2062c4 | ||
|
b1e6726a2b | ||
|
eadb41de4f | ||
|
5150ca8e20 | ||
|
61c3db0284 | ||
|
f9f8ef8e9d | ||
|
aacd99b544 | ||
|
fda4016cf9 | ||
|
553ca48588 | ||
|
1c427e1edf | ||
|
07e1cb2da4 | ||
|
6b321a4e3d | ||
|
2c80517970 | ||
|
9a0d8db024 | ||
|
bd1032bf4e | ||
|
9f147c5430 | ||
|
1f2648f48c | ||
|
55f5a2d938 | ||
|
a9007ad7bf | ||
|
45d176d33c | ||
|
66a1df3228 | ||
|
ddef925d08 | ||
|
03e1efd363 | ||
|
968ab4c36c | ||
|
c7c54969fa | ||
|
d353ec78bd | ||
|
d9d3b057c8 | ||
|
61984ad3ba | ||
|
f6988639bd | ||
|
ca6f5b8149 | ||
|
f49037e3bb |
3
.gitignore
vendored
@ -11,4 +11,5 @@ src/config.rs
|
||||
subprojects/libadwaita
|
||||
subprojects/gtksourceview
|
||||
.vscode
|
||||
.fenv
|
||||
.fenv
|
||||
.zed
|
||||
|
@ -11,21 +11,15 @@ variables:
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH || $CI_COMMIT_TAG
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
|
||||
include:
|
||||
- local: .gitlab-ci/run_checks.yml
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG == null
|
||||
- local: .gitlab-ci/build.yml
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG == null
|
||||
- local: .gitlab-ci/publish_docs.yml
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main"
|
||||
- local: .gitlab-ci/test.yml
|
||||
- component: "gitlab.gnome.org/GNOME/citemplates/basic-deploy-docs@master"
|
||||
inputs:
|
||||
docs-job-name: "build-docs"
|
||||
- local: .gitlab-ci/publish_nightly.yml
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main"
|
||||
- local: .gitlab-ci/create_release.yml
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
@ -1,6 +1,9 @@
|
||||
# Build the Flatpak
|
||||
|
||||
include: 'https://gitlab.gnome.org/GNOME/citemplates/-/raw/master/flatpak/flatpak_ci_initiative.yml'
|
||||
include:
|
||||
- project: "GNOME/citemplates"
|
||||
file: "flatpak/flatpak_ci_initiative.yml"
|
||||
- local: '.gitlab-ci/utils.yml'
|
||||
|
||||
variables:
|
||||
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
|
||||
@ -10,8 +13,41 @@ build@x86_64:
|
||||
extends:
|
||||
- .flatpak@x86_64
|
||||
stage: build
|
||||
after_script:
|
||||
# Copy the metainfo file to the current directory.
|
||||
- cp flatpak_app/files/share/metainfo/*.metainfo.xml .
|
||||
artifacts:
|
||||
paths:
|
||||
- $BUNDLE
|
||||
- 'repo.tar'
|
||||
- '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/'
|
||||
# Add the metainfo file for the corresponding test.
|
||||
- '${APP_ID}.metainfo.xml'
|
||||
|
||||
build@aarch64:
|
||||
extends:
|
||||
- .flatpak@aarch64
|
||||
stage: build
|
||||
|
||||
# Test builds with the stable runtime to make sure that the Flatpak will build on Flathub.
|
||||
# Should be run manually before tagging a new release.
|
||||
.build_stable:
|
||||
extends:
|
||||
- .stable_runtime
|
||||
variables:
|
||||
RUNTIME_REPO: "https://flathub.org/repo/flathub.flatpakrepo"
|
||||
RUN_TESTS: 0
|
||||
|
||||
build-stable@x86_64:
|
||||
extends:
|
||||
- .flatpak@x86_64
|
||||
- .build_stable
|
||||
stage: build
|
||||
when: manual
|
||||
|
||||
build-stable@aarch64:
|
||||
extends:
|
||||
- .flatpak@aarch64
|
||||
- .build_stable
|
||||
stage: build
|
||||
when: manual
|
||||
|
@ -1,72 +0,0 @@
|
||||
# Generate a tarball, test it, then publish it to the package registry and create a release
|
||||
|
||||
variables:
|
||||
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/release-tarballs/${CI_COMMIT_TAG}"
|
||||
RELEASE_TARBALL: "fractal-${CI_COMMIT_TAG}.tar.xz"
|
||||
RELEASE_TARBALL_SHA: "fractal-${CI_COMMIT_TAG}.tar.xz.sha256sum"
|
||||
METAINFO_PATH: "data/org.gnome.Fractal.metainfo.xml.in.in"
|
||||
TARBALL_TEST_MANIFEST_PATH: ".gitlab-ci/org.gnome.Fractal.CiTest.json"
|
||||
|
||||
release-tarball:
|
||||
stage: build
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
||||
variables:
|
||||
LANG: "C.UTF-8"
|
||||
tags:
|
||||
- flatpak
|
||||
script:
|
||||
# Create tarball with vendored rust dependencies
|
||||
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
||||
- echo "meson dist --no-test --allow-dirty" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
|
||||
- mv .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-dist tarball
|
||||
|
||||
# Extract release notes of latest version from appstream
|
||||
- appstreamcli metainfo-to-news --format markdown ${METAINFO_PATH} - |
|
||||
awk '{ x[NR] = $0 } END { for ( i=5 ; i<=NR ; i++ ) { if (x[i] ~ /^$/ && x[i+1] ~ /^Version/ && x[i+2] ~ /^-/ && x[i+3] ~ /^Released:/) exit; else print x[i]; }}' >
|
||||
release_notes.md
|
||||
artifacts:
|
||||
paths:
|
||||
- tarball
|
||||
- release_notes.md
|
||||
|
||||
test-tarball:
|
||||
stage: test
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-45'
|
||||
tags:
|
||||
- flatpak
|
||||
script:
|
||||
- TARBALL_SHA=$(cut -f 1 -d " " tarball/${RELEASE_TARBALL_SHA})
|
||||
- sed -i "s|%%TARBALL_PATH%%|${PWD}/tarball/${RELEASE_TARBALL}|g" ${TARBALL_TEST_MANIFEST_PATH}
|
||||
- sed -i "s|%%TARBALL_SHA%%|${TARBALL_SHA}|g" ${TARBALL_TEST_MANIFEST_PATH}
|
||||
- flatpak-builder --user --disable-rofiles-fuse --sandbox flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${TARBALL_TEST_MANIFEST_PATH}
|
||||
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/271534 The default URL needs authentication right now, which is less than optimal...
|
||||
# Get the package_files ID instead and use that as download URL in the "release" step.
|
||||
create-release:
|
||||
stage: deploy
|
||||
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||
script:
|
||||
- apk add curl jq
|
||||
|
||||
# Upload tarball to package registry
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file tarball/${RELEASE_TARBALL} "${PACKAGE_REGISTRY_URL}/${RELEASE_TARBALL}"
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file tarball/${RELEASE_TARBALL_SHA} "${PACKAGE_REGISTRY_URL}/${RELEASE_TARBALL_SHA}"
|
||||
|
||||
# Get package IDs and build URLs
|
||||
- |
|
||||
export PACKAGE_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages?sort=desc" | jq -c .[0].id)
|
||||
- |
|
||||
export RELEASE_TARBALL_DOWNLOAD_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${PACKAGE_ID}/package_files" | jq -c .[0].id)
|
||||
export RELEASE_TARBALL_SHA_DOWNLOAD_ID=$(curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/${PACKAGE_ID}/package_files" | jq -c .[1].id)
|
||||
- export RELEASE_TARBALL_URL="${CI_PROJECT_URL}/-/package_files/$RELEASE_TARBALL_DOWNLOAD_ID/download"
|
||||
- export RELEASE_TARBALL_SHA_URL="${CI_PROJECT_URL}/-/package_files/$RELEASE_TARBALL_SHA_DOWNLOAD_ID/download"
|
||||
- cat release_notes.md
|
||||
|
||||
# Create release
|
||||
- |
|
||||
release-cli create --name "$CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
|
||||
--assets-link "{\"name\":\"Tarball for ${CI_COMMIT_TAG}\",\"url\":\"${RELEASE_TARBALL_URL}\", \"filepath\": \"/tarball/${RELEASE_TARBALL}\"}" \
|
||||
--assets-link "{\"name\":\"Checksum for ${CI_COMMIT_TAG}\",\"url\":\"${RELEASE_TARBALL_SHA_URL}\", \"filepath\": \"/tarball/${RELEASE_TARBALL_SHA}\"}" \
|
||||
--description release_notes.md
|
17
.gitlab-ci/nextest.module.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "cargo-nextest",
|
||||
"buildsystem": "simple",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/nextest-rs/nextest/releases/download/cargo-nextest-0.9.100/cargo-nextest-0.9.100-x86_64-unknown-linux-gnu.tar.gz",
|
||||
"sha256": "de8843f9d4cd72ba7ff3995679536b8a5638ebc8f94848cb988c7549d9dc4e7d",
|
||||
"dest": "cargo-nextest",
|
||||
"strip-components": 0
|
||||
}
|
||||
],
|
||||
"build-commands": [
|
||||
"mkdir /app/bin",
|
||||
"mv cargo-nextest/cargo-nextest /app/bin/"
|
||||
]
|
||||
}
|
5
.gitlab-ci/nextest.toml
Normal file
@ -0,0 +1,5 @@
|
||||
[profile.default]
|
||||
fail-fast = false
|
||||
|
||||
[profile.default.junit]
|
||||
path = "junit.xml"
|
@ -1,53 +0,0 @@
|
||||
{
|
||||
"app-id": "org.gnome.Fractal",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "45",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"sdk-extensions": [
|
||||
"org.freedesktop.Sdk.Extension.rust-stable",
|
||||
"org.freedesktop.Sdk.Extension.llvm16"
|
||||
],
|
||||
"command": "fractal",
|
||||
"finish-args": [
|
||||
"--share=network",
|
||||
"--share=ipc",
|
||||
"--socket=fallback-x11",
|
||||
"--socket=wayland",
|
||||
"--socket=pulseaudio",
|
||||
"--device=dri",
|
||||
"--env=RUST_LOG=fractal=info,warn"
|
||||
],
|
||||
"build-options": {
|
||||
"append-ld-library-path": "/usr/lib/sdk/llvm16/lib",
|
||||
"append-path": "/usr/lib/sdk/llvm16/bin:/usr/lib/sdk/rust-stable/bin"
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"name": "libshumate",
|
||||
"buildsystem": "meson",
|
||||
"config-opts": [
|
||||
"-Dgir=false",
|
||||
"-Dvapi=false",
|
||||
"-Dgtk_doc=false"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://download.gnome.org/sources/libshumate/1.1/libshumate-1.1.0.tar.xz",
|
||||
"sha256": "b3b7c4c2d3002f37b951c9ca99b09275d0aa82265c69f53374ce12faefd3b14e"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "fractal",
|
||||
"buildsystem": "meson",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"path": "%%TARBALL_PATH%%",
|
||||
"sha256": "%%TARBALL_SHA%%"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
# Build and publish the docs
|
||||
|
||||
pages:
|
||||
stage: deploy
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
||||
tags:
|
||||
- flatpak
|
||||
script:
|
||||
- flatpak install --user --noninteractive org.freedesktop.Sdk.Extension.rust-nightly//23.08
|
||||
# We want to use rust-nightly to build the app, but mold is in rust-stable
|
||||
- sed -i 's|"org.freedesktop.Sdk.Extension.rust-stable"|"org.freedesktop.Sdk.Extension.rust-stable","org.freedesktop.Sdk.Extension.rust-nightly"|g' ${MANIFEST_PATH}
|
||||
- sed -i 's|:/usr/lib/sdk/rust-stable/bin|:/usr/lib/sdk/rust-nightly/bin|g' ${MANIFEST_PATH}
|
||||
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
||||
- echo "ninja src/doc" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
|
||||
- mv .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/src/doc public
|
||||
- chmod -R a=rwx public
|
||||
dependencies: []
|
||||
artifacts:
|
||||
paths:
|
||||
- 'public'
|
@ -1,6 +1,8 @@
|
||||
# Publish the nightly (Devel) version
|
||||
|
||||
include: 'https://gitlab.gnome.org/GNOME/citemplates/-/raw/master/flatpak/flatpak_ci_initiative.yml'
|
||||
include:
|
||||
- project: "GNOME/citemplates"
|
||||
file: "flatpak/flatpak_ci_initiative.yml"
|
||||
|
||||
publish_nightly@x86_64:
|
||||
extends: .publish_nightly
|
||||
|
@ -1,18 +1,24 @@
|
||||
# Configure and run code checks
|
||||
|
||||
include: '.gitlab-ci/utils.yml'
|
||||
|
||||
# Custom checks and lints
|
||||
checks:
|
||||
stage: check
|
||||
image: "rustlang/rust:nightly-slim"
|
||||
interruptible: true
|
||||
script:
|
||||
- scripts/checks.sh --verbose --force-install
|
||||
- hooks/checks.sh --verbose --force-install
|
||||
|
||||
# Lint the code
|
||||
cargo-clippy:
|
||||
extends:
|
||||
- .remove_build_only_modules
|
||||
stage: check
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
||||
tags:
|
||||
- flatpak
|
||||
interruptible: true
|
||||
script:
|
||||
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
||||
- echo "cargo clippy -- -D warnings" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
|
||||
|
69
.gitlab-ci/test.yml
Normal file
@ -0,0 +1,69 @@
|
||||
# Tests after the app is built.
|
||||
|
||||
include: '.gitlab-ci/utils.yml'
|
||||
|
||||
# Validate the metainfo with Flathub's tool.
|
||||
lint-metainfo:
|
||||
stage: test
|
||||
image:
|
||||
name: "ghcr.io/flathub/flatpak-builder-lint:latest"
|
||||
entrypoint: [""]
|
||||
variables:
|
||||
METAINFO: "${APP_ID}.metainfo.xml"
|
||||
interruptible: true
|
||||
script:
|
||||
# This tool has extra tests on top of appstreamcli and is required to pass for Flathub.
|
||||
- flatpak-builder-lint appstream ${METAINFO}
|
||||
# Test also with the pedantic and strict flags.
|
||||
- appstreamcli validate --pedantic --explain --strict ${METAINFO}
|
||||
needs: ["build@x86_64"]
|
||||
|
||||
# Run the Rust tests.
|
||||
rust-tests:
|
||||
extends:
|
||||
- .remove_build_only_modules
|
||||
stage: test
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
||||
tags:
|
||||
- flatpak
|
||||
interruptible: true
|
||||
script:
|
||||
# Create a temporary file.
|
||||
- TMP_FILE=$(mktemp)
|
||||
# Add a module for nextest to the Flatpak manifest and write it to the temporary file.
|
||||
- jq --slurpfile nextest .gitlab-ci/nextest.module.json '.modules = [$nextest[], .modules[]]' ${MANIFEST_PATH} > ${TMP_FILE}
|
||||
# Replace the manifest with the temporary file.
|
||||
- mv $TMP_FILE ${MANIFEST_PATH}
|
||||
# Initialize the Flatpak sandbox.
|
||||
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
||||
# Run the tests.
|
||||
- echo "cargo-nextest nextest run --config-file ../.gitlab-ci/nextest.toml" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
|
||||
dependencies: []
|
||||
artifacts:
|
||||
reports:
|
||||
junit: '.flatpak-builder/build/${FLATPAK_MODULE}/target/nextest/default/junit.xml'
|
||||
|
||||
# Test that there are no errors in the docs.
|
||||
build-docs:
|
||||
extends:
|
||||
- .remove_build_only_modules
|
||||
- .stable_runtime
|
||||
stage: test
|
||||
tags:
|
||||
- flatpak
|
||||
interruptible: true
|
||||
before_script:
|
||||
- !reference [.remove_build_only_modules, before_script]
|
||||
- !reference [.stable_runtime, before_script]
|
||||
script:
|
||||
- flatpak install --user --noninteractive org.freedesktop.Sdk.Extension.rust-nightly//${FREEDESKTOP_RUNTIME_BRANCH}
|
||||
# We want to use the nightly toolchain inside the build terminal.
|
||||
- sed -i 's|"org.freedesktop.Sdk.Extension.rust-stable"|"org.freedesktop.Sdk.Extension.rust-nightly"|g' ${MANIFEST_PATH}
|
||||
- sed -i 's|/rust-stable/bin|/rust-nightly/extra/sdk/rust-nightly/bin|g' ${MANIFEST_PATH}
|
||||
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
||||
- echo "ninja src/doc" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
|
||||
- tar --auto-compress --create --file "${CI_PROJECT_DIR}/${CI_PROJECT_NAME}-docs.tar.gz" --directory ".flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/src/doc" .
|
||||
dependencies: []
|
||||
artifacts:
|
||||
paths:
|
||||
- ${CI_PROJECT_NAME}-docs.tar.gz
|
34
.gitlab-ci/utils.yml
Normal file
@ -0,0 +1,34 @@
|
||||
# Utilities to include in other jobs.
|
||||
|
||||
# Remove the Flatpak modules that are only necessary when building the app with meson.
|
||||
.remove_build_only_modules:
|
||||
variables:
|
||||
# JSON array of the names of the Flatpak modules to remove.
|
||||
MODULES_TO_REMOVE: '["grass", "glycin-loaders"]'
|
||||
before_script:
|
||||
# Create a temporary file.
|
||||
- TMP_FILE=$(mktemp)
|
||||
# Remove the modules in the manifest and write the output to the temporary file.
|
||||
- jq --argjson modules_to_remove "${MODULES_TO_REMOVE}" 'del(.modules[] | select(IN(.name; $modules_to_remove | .[])))' ${MANIFEST_PATH} > $TMP_FILE
|
||||
# Replace the manifest with the temporary file.
|
||||
- mv $TMP_FILE ${MANIFEST_PATH}
|
||||
# Use meson's build-env profile.
|
||||
- sed -i "s|-Dprofile=development|-Dprofile=build-env|g" ${MANIFEST_PATH}
|
||||
|
||||
# Update the Flatpak manifest to use the latest stable GNOME runtime and use the corresponding
|
||||
# container image.
|
||||
#
|
||||
# To get a list of available GNOME and LLVM versions, see:
|
||||
# https://gitlab.gnome.org/GNOME/gnome-runtime-images/-/blob/master/.gitlab-ci.yml
|
||||
.stable_runtime:
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-${GNOME_STABLE_VERSION}'
|
||||
variables:
|
||||
GNOME_STABLE_VERSION: "48"
|
||||
FREEDESKTOP_RUNTIME_BRANCH: "24.08"
|
||||
LLVM_NIGHTLY_VERSION: "20"
|
||||
LLVM_STABLE_VERSION: "20"
|
||||
before_script:
|
||||
# We want to use the latest stable GNOME runtime instead of the nightly runtime.
|
||||
- sed -i "s|master|${GNOME_STABLE_VERSION}|g" ${MANIFEST_PATH}
|
||||
# We want to use the latest LLVM extension for the stable runtime.
|
||||
- sed -i "s|llvm${LLVM_NIGHTLY_VERSION}|llvm${LLVM_STABLE_VERSION}|g" ${MANIFEST_PATH}
|
@ -1,8 +1,5 @@
|
||||
<!-- This is a template to report bugs, select the corresponding template to request a new feature. -->
|
||||
|
||||
<!-- Please note that Fractal was rewritten from scratch and our current focus is on the main branch
|
||||
or the latest nightly build, so issues with the stable release are unlikely to be fixed. -->
|
||||
|
||||
Detailed description of the issue. Provide as much information as you can, potentially with images
|
||||
or videos showing the issue.
|
||||
|
||||
@ -15,16 +12,24 @@ or videos showing the issue.
|
||||
## Information
|
||||
|
||||
* [ ] This bug is reproducible from the latest nightly build <!-- Check this box if the bug happens on Fractal's development version -->
|
||||
* [ ] This bug is reproducible with an [officially supported flatpak](https://gitlab.gnome.org/World/fractal#installation-instructions)
|
||||
<!-- ⚠️ Issue with third party packages (distribution repository, AUR, snap, Fedora flatpak…) should be reported to your distributor -->
|
||||
* **Fractal Version**: <!-- The version of Fractal you were using when the bug occurred. Check the "About Fractal" dialog for this information -->
|
||||
* **OS Version**: <!-- Operating system version, e.g. Fedora 36 -->
|
||||
* **Installation Source**: <!-- Where you installed Fractal from, e.g. Flathub, GNOME Apps Nightly, AUR, or distro repositories -->
|
||||
* **Homeserver**: <!-- The homeserver for your matrix account, e.g. matrix.org, gnome.org, … You can mention several of them if this is reproducible on multiple ones. -->
|
||||
|
||||
<!-- If you have a crash report, use the "Attach A File" button in the issue editor to attach it, or paste it in a code block below. -->
|
||||
<!-- To create a code block, you surround the code with two lines with three "`" characters like so:
|
||||
<!-- If you have error logs or a crash report, use the "Attach A File" button in the issue editor to attach it, or paste it in a code block below.
|
||||
|
||||
To access the logs, you can run `SYSTEMD_LESS=FRXMK journalctl -e -o cat _COMM=fractal`
|
||||
|
||||
To generate a stack trace in case of a crash, you can follow this guide: https://handbook.gnome.org/issues/stack-traces.html
|
||||
|
||||
To create a code block, surround the code with two lines with three "`" characters like so:
|
||||
|
||||
```
|
||||
code goes here
|
||||
```
|
||||
|
||||
-->
|
||||
|
||||
/label ~"1. Bug"
|
||||
|
@ -1,7 +1,10 @@
|
||||
<!-- Please note that Fractal was rewritten from scratch and our current focus is on the main branch
|
||||
or the latest nightly build. Some features missing in the stable release are already available
|
||||
in the development version. To avoid duplicates and unnecessary issues, please check that your
|
||||
request is for something that is not yet implemented and doesn’t have an existing issue open. -->
|
||||
<!-- Please note that some features missing in the stable release are already available in the
|
||||
development version. To avoid duplicates and unnecessary issues, please check that your request is
|
||||
for something that is not yet implemented, and doesn’t have an existing issue that is open or that
|
||||
was closed as out of scope.
|
||||
We also recommend talking to us in the #fractal:gnome.org Matrix room first. We do not intend to
|
||||
implement everything and don’t want our issue tracker to become a giant wishlist, but rather a
|
||||
curated list of known problems and planned features. -->
|
||||
|
||||
Detailed description of the feature. Provide as much information as you can.
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
[default.extend-words]
|
||||
gir = "gir"
|
||||
inout = "inout"
|
||||
numer = "numer" # Short for numerator in GStreamer
|
||||
ue = "ue" # End of word after mnemonic
|
||||
|
||||
[type.po]
|
||||
extend-glob = ["*.po"]
|
||||
@ -9,3 +11,7 @@ check-file = false
|
||||
[type.json]
|
||||
extend-glob = ["*.json"]
|
||||
check-file = false
|
||||
|
||||
[type.png]
|
||||
extend-glob = ["*.png"]
|
||||
check-file = false
|
||||
|
@ -1,56 +1,63 @@
|
||||
# Contributing
|
||||
|
||||
## Newcomers
|
||||
On this page you can learn how to contribute to [Fractal](https://gitlab.gnome.org/World/fractal/)
|
||||
by working on the code.
|
||||
|
||||
[Fractal](https://gitlab.gnome.org/GNOME/fractal/) follows the [GNOME Newcomers workflow](https://wiki.gnome.org/Newcomers/BuildProject).
|
||||
Follow these pages to learn how to contribute.
|
||||
## Getting Started
|
||||
|
||||
Here are also a few links to help you get started with Rust and the GTK Rust bindings:
|
||||
Here are a few links to help you get started with Rust and the GTK Rust bindings:
|
||||
|
||||
- [Learn Rust](https://www.rust-lang.org/learn)
|
||||
- [GUI development with Rust and GTK 4](https://gtk-rs.org/gtk4-rs/stable/latest/book)
|
||||
- [gtk-rs website](https://gtk-rs.org/)
|
||||
|
||||
[The Rust docs of our application](https://gnome.pages.gitlab.gnome.org/fractal/) might also be
|
||||
useful.
|
||||
[The Rust docs of our application](https://gnome.pages.gitlab.gnome.org/fractal/) and the [GNOME Development Center](https://developer.gnome.org/)
|
||||
might also be useful.
|
||||
|
||||
Don't hesitate to join [our Matrix room](https://matrix.to/#/#fractal:gnome.org) to come talk to us
|
||||
and ask us any questions you might have.
|
||||
and ask us any questions you might have. The [“Rust ❤️ GNOME” room](https://matrix.to/#/#rust:gnome.org)
|
||||
can also provide general help about using Rust in GNOME.
|
||||
|
||||
## Build Instructions
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Fractal is written in Rust, so you will need to have at least Rust 1.70 and Cargo available on your
|
||||
Fractal is written in Rust, so you will need to have at least Rust 1.80 and Cargo available on your
|
||||
system. You will also need to install the Rust nightly toolchain to be able to run our
|
||||
[pre-commit hook](#pre-commit).
|
||||
[pre-commit hook](#pre-commit), which can be done with:
|
||||
|
||||
```sh
|
||||
rustup toolchain install nightly
|
||||
```
|
||||
|
||||
If you're building Fractal with Flatpak (via GNOME Builder or the command line), you will need to
|
||||
manually add the necessary remotes and install the required FreeDesktop extensions:
|
||||
manually add the necessary remotes and install the required freedesktop.org extensions:
|
||||
|
||||
```sh
|
||||
# Add Flathub and the gnome-nightly repo
|
||||
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
|
||||
# Install the gnome-nightly Sdk and Platform runtime
|
||||
flatpak install --user gnome-nightly org.gnome.Sdk//master org.gnome.Platform//master
|
||||
|
||||
# Install the required rust-stable extension from Flathub
|
||||
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//23.08
|
||||
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//25.08beta
|
||||
|
||||
# Install the required llvm extension from Flathub
|
||||
flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm16//23.08
|
||||
flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm20//25.08beta
|
||||
```
|
||||
|
||||
If you are building the flatpak manually you will also need flatpak-builder on your system, or the
|
||||
`org.flatpak.Builder` flatpak.
|
||||
`org.flatpak.Builder` flatpak from Flathub.
|
||||
|
||||
### GNOME Builder
|
||||
|
||||
Using [GNOME Builder](https://wiki.gnome.org/Apps/Builder) with [flatpak](https://flatpak.org/) is
|
||||
Using [GNOME Builder](https://apps.gnome.org/Builder/) with [flatpak](https://flatpak.org/) is
|
||||
the recommended way of building and installing Fractal.
|
||||
|
||||
You can find help on cloning and building a project in the [docs of Builder](https://builder.readthedocs.io/).
|
||||
|
||||
### Flatpak via fenv
|
||||
|
||||
As an alternative, [fenv](https://gitlab.gnome.org/ZanderBrown/fenv) allows to setup a flatpak
|
||||
@ -59,42 +66,29 @@ environment from the command line and execute commands in that environment.
|
||||
First, install fenv:
|
||||
|
||||
```sh
|
||||
# Clone the project somewhere on your system
|
||||
git clone https://gitlab.gnome.org/ZanderBrown/fenv.git
|
||||
|
||||
# Move into the folder
|
||||
cd fenv
|
||||
|
||||
# Install fenv with Cargo
|
||||
cargo install --path .
|
||||
cargo install --git https://gitlab.gnome.org/ZanderBrown/fenv fenv
|
||||
```
|
||||
|
||||
You can now discard the `fenv` directory if you want.
|
||||
|
||||
After that, move into the directory where you cloned Fractal and setup the project:
|
||||
After that, setup the project:
|
||||
|
||||
```sh
|
||||
# Setup the flatpak environment
|
||||
# Set up the flatpak environment
|
||||
fenv gen build-aux/org.gnome.Fractal.Devel.json
|
||||
|
||||
# Initialize the build system
|
||||
fenv exec -- meson setup -Dprofile=development --prefix=/app _build
|
||||
```
|
||||
|
||||
Finally, build and run the application:
|
||||
|
||||
```sh
|
||||
# Build the project
|
||||
fenv exec -- ninja -C _build
|
||||
|
||||
# Install the application in the flatpak environment
|
||||
fenv exec -- ninja -C _build install
|
||||
fenv build
|
||||
|
||||
# Launch Fractal
|
||||
fenv exec ./_build/src/fractal
|
||||
fenv run
|
||||
```
|
||||
|
||||
To test changes you make to the code, re-run these three last commands.
|
||||
_Note that fenv will use `_build` as build directory._
|
||||
|
||||
To test changes you make to the code, re-run these two last commands.
|
||||
|
||||
### Install the flatpak
|
||||
|
||||
@ -106,7 +100,7 @@ GNOME Builder can export a flatpak of the app after it has been successfully bui
|
||||
Fractal can then be installed with:
|
||||
|
||||
```sh
|
||||
flatpak install --user --bundle path/to/org.gnome.Fractal.Devel.flatpak
|
||||
flatpak install --user --bundle path/to/org.gnome.Fractal.Devel.flatpak
|
||||
```
|
||||
|
||||
Alternatively, it can be built and installed with flatpak-builder:
|
||||
@ -137,7 +131,7 @@ sudo ninja -C _build install
|
||||
## Pre-commit
|
||||
|
||||
We expect all code contributions to be correctly formatted. To help with that, a pre-commit hook
|
||||
should get installed as part of the building process. It runs the `scripts/checks.sh` script. It's a
|
||||
should get installed as part of the building process. It runs the `hooks/checks.sh` script. It's a
|
||||
quick script that makes sure that the code is correctly formatted with `rustfmt`, among other
|
||||
things. Make sure that this script is effectively run before submitting your merge request,
|
||||
otherwise CI will probably fail right away.
|
||||
@ -147,10 +141,14 @@ submissions and is once again checked by our CI.
|
||||
|
||||
## Commit
|
||||
|
||||
Please follow the [GNOME commit message guidelines](https://wiki.gnome.org/Git/CommitMessages).
|
||||
Please follow the [GNOME commit message guidelines](https://handbook.gnome.org/development/commit-messages.html).
|
||||
We enforce the use of a tag as a prefix for the summary line. It should be the area of the app that
|
||||
is changed.
|
||||
|
||||
## Merge Request
|
||||
|
||||
You must pass all the prerequisites of the [Change Submission Guide](https://handbook.gnome.org/development/change-submission.html).
|
||||
|
||||
Before submitting a merge request, make sure that [your fork is available publicly](https://gitlab.gnome.org/help/user/public_access.md),
|
||||
otherwise CI won't be able to run.
|
||||
|
||||
|
4874
Cargo.lock
generated
133
Cargo.toml
@ -1,11 +1,14 @@
|
||||
[package]
|
||||
name = "fractal"
|
||||
version = "6.0.0-rc"
|
||||
version = "12.0.0"
|
||||
authors = ["Julian Sparber <julian@sparber.net>"]
|
||||
edition = "2021"
|
||||
rust-version = "1.70"
|
||||
edition = "2024"
|
||||
rust-version = "1.85"
|
||||
publish = false
|
||||
|
||||
[package.metadata.cargo-machete]
|
||||
ignored = ["serde_bytes"] # Used by the SecretFile API.
|
||||
|
||||
[profile.release]
|
||||
debug = true
|
||||
lto = "thin"
|
||||
@ -21,88 +24,110 @@ codegen-units = 16
|
||||
|
||||
# Please keep dependencies sorted.
|
||||
[dependencies]
|
||||
ashpd = { version = "0.6", default-features = false, features = [
|
||||
"pipewire",
|
||||
"tracing",
|
||||
"tokio",
|
||||
] }
|
||||
blurhash = "0.2"
|
||||
cfg-if = "1"
|
||||
diff = "0.1"
|
||||
djb_hash = "0.1"
|
||||
eyeball-im = "0.4"
|
||||
futures-channel = "0.3"
|
||||
futures-util = "0.3"
|
||||
geo-uri = "0.2"
|
||||
gettext-rs = { version = "0.7", features = ["gettext-system"] }
|
||||
html-escape = "0.2"
|
||||
html2pango = "0.6"
|
||||
html5gum = "0.5"
|
||||
image = "0.24"
|
||||
indexmap = "2"
|
||||
linkify = "0.10.0"
|
||||
mime = "0.3"
|
||||
mime_guess = "2"
|
||||
once_cell = "1"
|
||||
oo7 = { version = "0.2", default-features = false, features = [
|
||||
"native_crypto",
|
||||
"tokio",
|
||||
"tracing",
|
||||
] }
|
||||
pulldown-cmark = "0.9"
|
||||
qrcode = "0.12"
|
||||
rand = "0.8"
|
||||
numeric-sort = "0.1"
|
||||
pulldown-cmark = "0.13"
|
||||
qrcode = { version = "0.14", default-features = false }
|
||||
rand = "0.9"
|
||||
regex = "1"
|
||||
rmp-serde = "1"
|
||||
rqrr = "0.6"
|
||||
secular = { version = "1", features = ["bmp", "normalization"] }
|
||||
serde = "1"
|
||||
serde_bytes = "0.11"
|
||||
serde_json = "1"
|
||||
strum = { version = "0.25", features = ["derive"] }
|
||||
thiserror = "1"
|
||||
strum = { version = "0.27.1", features = ["derive"] }
|
||||
tempfile = "3"
|
||||
thiserror = "2"
|
||||
tld = "2"
|
||||
tokio = { version = "1", features = ["rt", "rt-multi-thread", "sync"] }
|
||||
tokio-stream = { version = "0.1", features = ["sync"] }
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
url = "2"
|
||||
webp = { version = "0.3", default-features = false }
|
||||
wtinylfu = "0.2"
|
||||
zeroize = "1"
|
||||
|
||||
# gtk-rs project and dependents. These usually need to be updated together.
|
||||
adw = { package = "libadwaita", version = "0.5", features = ["v1_4"] }
|
||||
gst = { version = "0.21", package = "gstreamer" }
|
||||
gst_base = { version = "0.21", package = "gstreamer-base" }
|
||||
gst_gtk = { version = "0.11", package = "gst-plugin-gtk4" }
|
||||
gst_pbutils = { version = "0.21", package = "gstreamer-pbutils" }
|
||||
gst_play = { version = "0.21", package = "gstreamer-play" }
|
||||
gst_video = { version = "0.21", package = "gstreamer-video" }
|
||||
gtk = { package = "gtk4", version = "0.7", features = ["v4_10"] }
|
||||
shumate = { package = "libshumate", version = "0.4" }
|
||||
sourceview = { package = "sourceview5", version = "0.7" }
|
||||
adw = { package = "libadwaita", version = "0.7", features = ["v1_7"] }
|
||||
glycin = { version = "3.0.0-beta.1", default-features = false, features = ["tokio", "gdk4"] }
|
||||
gst = { version = "0.23", package = "gstreamer" }
|
||||
gst_app = { version = "0.23", package = "gstreamer-app" }
|
||||
gst_pbutils = { version = "0.23", package = "gstreamer-pbutils" }
|
||||
gst_play = { version = "0.23", package = "gstreamer-play" }
|
||||
gst_video = { version = "0.23", package = "gstreamer-video" }
|
||||
gtk = { package = "gtk4", version = "0.9", features = ["gnome_47"] }
|
||||
shumate = { package = "libshumate", version = "0.6" }
|
||||
sourceview = { package = "sourceview5", version = "0.9" }
|
||||
|
||||
[dependencies.matrix-sdk]
|
||||
# version = "0.13"
|
||||
git = "https://github.com/matrix-org/matrix-rust-sdk.git"
|
||||
rev = "19526cea6bce133fc48904838956846aeb966dc6"
|
||||
features = [
|
||||
"socks",
|
||||
"sso-login",
|
||||
"markdown",
|
||||
"qrcode",
|
||||
"image-rayon",
|
||||
]
|
||||
rev = "a9ce1c6e5822b8eb8411c5bc257049d9a9d15884"
|
||||
features = ["socks", "sso-login", "markdown", "qrcode"]
|
||||
|
||||
[dependencies.matrix-sdk-store-encryption]
|
||||
# version = "0.13"
|
||||
git = "https://github.com/matrix-org/matrix-rust-sdk.git"
|
||||
rev = "a9ce1c6e5822b8eb8411c5bc257049d9a9d15884"
|
||||
|
||||
[dependencies.matrix-sdk-ui]
|
||||
# version = "0.13"
|
||||
git = "https://github.com/matrix-org/matrix-rust-sdk.git"
|
||||
rev = "19526cea6bce133fc48904838956846aeb966dc6"
|
||||
default-features = false
|
||||
features = ["e2e-encryption", "native-tls"]
|
||||
rev = "a9ce1c6e5822b8eb8411c5bc257049d9a9d15884"
|
||||
|
||||
[dependencies.ruma]
|
||||
version = "0.9.4"
|
||||
# git = "https://github.com/ruma/ruma.git"
|
||||
# rev = "4ef6d1641bdd7d1c1586d2356c183798f3900bf1"
|
||||
# version = "0.12.5"
|
||||
git = "https://github.com/ruma/ruma.git"
|
||||
rev = "a2fe858133ba932b4bda730dc7472c9c985739a0"
|
||||
features = [
|
||||
"unstable-unspecified",
|
||||
"client-api-c",
|
||||
"compat-key-id",
|
||||
"compat-user-id",
|
||||
"markdown",
|
||||
"html-matrix",
|
||||
"compat-arbitrary-length-ids",
|
||||
"compat-server-signing-key-version",
|
||||
"compat-empty-string-null",
|
||||
"compat-null",
|
||||
"compat-optional",
|
||||
"compat-unset-avatar",
|
||||
"compat-get-3pids",
|
||||
"html",
|
||||
"compat-lax-room-create-deser",
|
||||
"compat-lax-room-topic-deser",
|
||||
]
|
||||
|
||||
# Linux-only dependencies.
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
aperture = "0.9"
|
||||
ashpd = { version = "0.11", default-features = false, features = [
|
||||
"tracing",
|
||||
"tokio",
|
||||
] }
|
||||
oo7 = { version = "0.4", default-features = false, features = [
|
||||
"openssl_crypto",
|
||||
"tokio",
|
||||
"tracing",
|
||||
] }
|
||||
|
||||
[dev-dependencies]
|
||||
assert_matches2 = "0.1"
|
||||
|
||||
[lints.clippy]
|
||||
pedantic = { level = "warn", priority = -1 }
|
||||
cast_possible_truncation = "allow"
|
||||
cast_precision_loss = "allow"
|
||||
default_trait_access = "allow"
|
||||
module_name_repetitions = "allow"
|
||||
new_without_default = "allow"
|
||||
struct_field_names = "allow"
|
||||
unsafe_derive_deserialize = "allow"
|
||||
wildcard_imports = "allow"
|
||||
|
86
README.md
@ -1,13 +1,19 @@
|
||||
[](https://matrix.to/#/#fractal:gnome.org)
|
||||
[](https://gitlab.gnome.org/GNOME/fractal/)
|
||||
[](https://gnome.pages.gitlab.gnome.org/fractal/)
|
||||
[](https://gitlab.gnome.org/World/fractal/)
|
||||
[](https://world.pages.gitlab.gnome.org/fractal/)
|
||||
[](https://flathub.org/apps/org.gnome.Fractal)
|
||||
|
||||
# Fractal
|
||||
|
||||
Fractal is a Matrix messaging app for GNOME written in Rust. Its interface is optimized for
|
||||
collaboration in large groups, such as free software projects, and will fit all screens, big or small.
|
||||
|
||||

|
||||
<img
|
||||
src="https://gitlab.gnome.org/World/fractal/raw/main/screenshots/main.png"
|
||||
alt="Fractal’s main window"
|
||||
width="882"
|
||||
height="672"
|
||||
/>
|
||||
|
||||
Highlights:
|
||||
|
||||
@ -32,7 +38,7 @@ development version while keeping the stable release around for daily use.
|
||||
|
||||
### Stable version
|
||||
|
||||
The current stable version is 5 (released November 24th 2023).
|
||||
The current stable version is 12 (released August 11th 2025).
|
||||
|
||||
You can get the official Fractal Flatpak from Flathub.
|
||||
|
||||
@ -47,33 +53,51 @@ You can get the official Fractal Flatpak from Flathub.
|
||||
|
||||
### Beta version
|
||||
|
||||
The current beta version is 6.rc (released January 4th 2024).
|
||||
The current beta version is 12 (same as stable).
|
||||
|
||||
It is available as a Flatpak on Flathub Beta.
|
||||
|
||||
To get it, first set up the Flathub Beta remote:
|
||||
|
||||
<a href="https://flathub.org/beta-repo/flathub-beta.flatpakrepo">
|
||||
<img
|
||||
src="https://gitlab.gnome.org/World/fractal/uploads/81944cf92504343a03121a58722345a2/flathub-beta-badge.svg"
|
||||
alt="Add Flathub Beta repository"
|
||||
width="240px"
|
||||
height="80px"
|
||||
/>
|
||||
</a>
|
||||
|
||||
Then install the application.
|
||||
|
||||
<a href="https://flathub.org/beta-repo/appstream/org.gnome.Fractal.flatpakref">
|
||||
<img
|
||||
src="https://gitlab.gnome.org/World/fractal/uploads/31a40da5d71a30c47f135e78ffef3df5/fractal-beta-badge.svg"
|
||||
alt="Download Fractal Beta"
|
||||
width="240px"
|
||||
height="80px"
|
||||
/>
|
||||
</a>
|
||||
|
||||
Or from the command line:
|
||||
|
||||
```sh
|
||||
# Add the Flathub Beta repo
|
||||
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
|
||||
```
|
||||
|
||||
Or download and install the [Flathub Beta repository file](https://flathub.org/beta-repo/flathub-beta.flatpakrepo).
|
||||
|
||||
Then, install the application:
|
||||
|
||||
```sh
|
||||
# Install Fractal Beta
|
||||
flatpak install --user flathub-beta org.gnome.Fractal
|
||||
```
|
||||
|
||||
Or download and install the [application file](https://flathub.org/beta-repo/appstream/org.gnome.Fractal.flatpakref).
|
||||
|
||||
Finally, run the application:
|
||||
|
||||
```sh
|
||||
flatpak run org.gnome.Fractal//beta
|
||||
```
|
||||
|
||||
If you want to run the beta version by default instead of the stable version, use this command:
|
||||
If you have both the stable and beta versions installed, your system will only show one icon in the
|
||||
apps list and launch the stable version by default. If you want to run the beta version by default,
|
||||
use this command:
|
||||
|
||||
```sh
|
||||
flatpak make-current org.gnome.Fractal beta
|
||||
@ -89,9 +113,9 @@ in [the gnome-nightly repo](https://nightly.gnome.org/).
|
||||
|
||||
First, set up the GNOME nightlies.
|
||||
|
||||
<a href="https://nightly.gnome.org/gnome-nightly.flatpakrepo ">
|
||||
<a href="https://nightly.gnome.org/gnome-nightly.flatpakrepo">
|
||||
<img
|
||||
src="https://gitlab.gnome.org/GNOME/fractal/uploads/c276f92660dcf50067714ac08e193fea/gnome-nightly-badge.svg"
|
||||
src="https://gitlab.gnome.org/World/fractal/uploads/c276f92660dcf50067714ac08e193fea/gnome-nightly-badge.svg"
|
||||
alt="Add gnome-nightly repository"
|
||||
width="240px"
|
||||
height="80px"
|
||||
@ -102,7 +126,7 @@ Then install the application.
|
||||
|
||||
<a href="https://nightly.gnome.org/repo/appstream/org.gnome.Fractal.Devel.flatpakref">
|
||||
<img
|
||||
src="https://gitlab.gnome.org/GNOME/fractal/uploads/5e42d322eaacc7da2a52bfda9f7a4e53/fractal-nightly-badge.svg"
|
||||
src="https://gitlab.gnome.org/World/fractal/uploads/5e42d322eaacc7da2a52bfda9f7a4e53/fractal-nightly-badge.svg"
|
||||
alt="Download Fractal Nightly"
|
||||
width="240px"
|
||||
height="80px"
|
||||
@ -121,6 +145,24 @@ flatpak install --user gnome-nightly org.gnome.Fractal.Devel
|
||||
|
||||
### Runtime Dependencies
|
||||
|
||||
On top of the dependencies required at build time and checked by Meson, Fractal depends on the
|
||||
following dependencies at runtime:
|
||||
|
||||
* xdg-desktop-portal and its backends: some functionalities are dependant on the following portals,
|
||||
and a permission will be asked when necessary, but Fractal should work without them:
|
||||
* Secret: this portal or a Secret Service is required, see [storing secrets](#storing-secrets).
|
||||
* Camera: scan QR codes during verification.
|
||||
* Location: send the user’s location in a conversation.
|
||||
* Settings: get the 12h/24h time format system preference.
|
||||
* GStreamer plugins:
|
||||
* gst-plugin-gtk4 (gstgtk4): required to preview videos in the timeline and to present the output
|
||||
of the camera.
|
||||
* libgstpipewire with the `pipewiredeviceprovider`: used to list and access the cameras.
|
||||
* glycin: all images are loaded with this library so loaders for the different image formats need to
|
||||
be installed.
|
||||
|
||||
#### Storing secrets
|
||||
|
||||
Fractal doesn’t store your **password**, but it stores your **access token** and the **passphrase**
|
||||
used to encrypt the database and the local cache.
|
||||
|
||||
@ -128,12 +170,12 @@ The Fractal Flatpaks use the [Secret **Portal**](https://docs.flatpak.org/en/lat
|
||||
to store those secrets. If you are using GNOME this should just work. If you are using a different
|
||||
desktop environment or are facing issues, make sure `xdg-desktop-portal` is installed along with a
|
||||
service that provides the [Secret portal backend interface](https://docs.flatpak.org/en/latest/portal-api-reference.html#gdbus-org.freedesktop.impl.portal.Secret),
|
||||
which is currently only implemented by gnome-keyring.
|
||||
like gnome-keyring or KWallet (since version 6.2).
|
||||
|
||||
Any version that is not sandboxed relies on software that implements the [Secret **Service** API](https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/)
|
||||
to store those secrets. Therefore, you need to have software providing that service on your system,
|
||||
like gnome-keyring, KeepassXC ([setup guide](https://avaldes.co/2020/01/28/secret-service-keepassxc.html)),
|
||||
or KWallet (since version 5.97). Once again, if you are using GNOME this should just work.
|
||||
or KWallet. Once again, if you are using GNOME this should just work.
|
||||
|
||||
If you prefer to use software that only implements the Secret Service API while using the Flatpaks,
|
||||
you need to make sure that no service implementing the Secret portal backend interface is running,
|
||||
@ -178,7 +220,7 @@ They are translated on [Element’s translation platform](https://translate.elem
|
||||
* Does Fractal have encryption support?
|
||||
|
||||
**Yes**, since Fractal 5, encryption is supported using Cross-Signing. See
|
||||
<https://gitlab.gnome.org/GNOME/fractal/-/issues/717> for more info on the state of encryption.
|
||||
<https://gitlab.gnome.org/World/fractal/-/issues/717> for more info on the state of encryption.
|
||||
|
||||
* Can I run Fractal with the window closed?
|
||||
|
||||
@ -192,7 +234,7 @@ The current version is a complete rewrite of Fractal built on top of the
|
||||
[matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk) using [GTK4](https://gtk.org/).
|
||||
|
||||
The previous version of Fractal was using GTK3 and its own backend to talk to a matrix homeserver,
|
||||
the code can be found in the [`legacy` branch](https://gitlab.gnome.org/GNOME/fractal/-/tree/legacy).
|
||||
the code can be found in the [`legacy` branch](https://gitlab.gnome.org/World/fractal/-/tree/legacy).
|
||||
|
||||
Initial versions were based on Fest <https://github.com/fest-im/fest>, formerly called ruma-gtk.
|
||||
In the origins of the project it was called guillotine, based on French revolution, in relation with
|
||||
@ -202,4 +244,4 @@ The name Fractal was proposed by Regina Bíró.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Fractal follows the official GNOME Foundation code of conduct. You can read it [here](/code-of-conduct.md).
|
||||
Fractal follows the official [GNOME Code of Conduct](https://conduct.gnome.org/).
|
||||
|
115
RELEASING.md
Normal file
@ -0,0 +1,115 @@
|
||||
# Releasing Fractal
|
||||
|
||||
## Before making a new release
|
||||
|
||||
- Update the dependencies (crates or system libraries) and migrate from deprecated APIs.
|
||||
- Make the `build-stable` CI jobs use the latest stable GNOME runtime.
|
||||
|
||||
## Making a new stable release
|
||||
|
||||
1. If this is a new major version, create a new `fractal-M` branch, where `M` is the major version
|
||||
number.
|
||||
2. Create a [release merge request](#release-merge-request-content) against the major version
|
||||
branch.
|
||||
3. After the MR is merged, [create a tag](#creating-a-signed-tag) on the last commit of the major
|
||||
version branch.
|
||||
4. Create a release on GitLab for that tag.
|
||||
5. Make a fast-forward merge of the major version branch to `main`.
|
||||
6. [Publish the new version on Flathub and Flathub beta](#publishing-a-version-on-flathub).
|
||||
7. [Get the stable branch added to Damned Lies](#getting-a-branch-added-to-damned-lies).
|
||||
|
||||
## Making a new beta release
|
||||
|
||||
1. Create a [release merge request](#release-merge-request-content) against `main`.
|
||||
2. After the MR is merged, [create a tag](#creating-a-signed-tag) on the last commit of `main`.
|
||||
3. Create a release on GitLab for that tag.
|
||||
4. [Publish the new version on Flathub beta](#publishing-a-version-on-flathub).
|
||||
|
||||
## Release merge request content
|
||||
|
||||
_To represent conditional list items, this section will start items with "**stable.**" to mean "if
|
||||
this is a stable release"._
|
||||
|
||||
Make a single release commit containing the following changes:
|
||||
|
||||
- Update `/meson.build`:
|
||||
- Change the version on L3, it must look the same as it would in the app, with a
|
||||
`major_version.pre_release_version` format.
|
||||
- Change the `major_version` and `pre_release_version` on L13-14. For stable versions,
|
||||
`pre_release_version` should be an empty string.
|
||||
- Update `/Cargo.toml`: change the `version`, using a semver format.
|
||||
- Update `/README.md`:
|
||||
- **stable.** update the current stable version and its release date.
|
||||
- Update the current beta version. For stable versions, put `(same as stable)` instead of the
|
||||
release date.
|
||||
- Update `/data/org.gnome.Fractal.metainfo.xml.in.in`:
|
||||
- Add a new `release` entry at the top of the `releases`:
|
||||
- Its `version` should use the `major_version~pre_release_version` format.
|
||||
- For stable versions, its `type` should be `stable`, otherwise it should be `development`.
|
||||
- **stable.** remove all the `development` entries.
|
||||
- **stable.** update the paths of the screenshots to point to the major version branch.
|
||||
- **stable.** If there were visible changes in the UI, update the screenshots in `/screenshots`.
|
||||
They should follow [Flathub's quality guidelines](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots),
|
||||
with the following window sizes:
|
||||
- `main.png`: 760×550.
|
||||
- `adaptive.png`: 360×600.
|
||||
- `media-history.png`: 500×540.
|
||||
|
||||
A good practice in this merge request is to launch the `build-stable` CI jobs to make sure that
|
||||
Fractal builds with the stable Flatpak runtime.
|
||||
|
||||
## Creating a signed tag
|
||||
|
||||
Creating a signed tag is not mandatory but is good practice. To do so, use this command:
|
||||
|
||||
```sh
|
||||
git tag -s V
|
||||
```
|
||||
|
||||
With `V` being the version to tag, in the format `major_version.pre_release_version`.
|
||||
|
||||
You will be prompted for a tag message. This message doesn't really matter so something like
|
||||
`Release Fractal V` should suffice.
|
||||
|
||||
## Publishing a version on Flathub
|
||||
|
||||
Publishing a version of Fractal on Flathub is done via its [Flathub repository on GitHub](https://github.com/flathub/org.gnome.Fractal/).
|
||||
A permission from the Flathub team granted to your GitHub account is necessary to merge PRs on this
|
||||
repository, but anyone can open a PR.
|
||||
|
||||
1. Open a PR against the correct branch. For a stable build, work against the `master` branch, for a
|
||||
beta build, work against the `beta` branch.
|
||||
|
||||
It must contain a commit that updates the manifest to:
|
||||
|
||||
- Use the latest GNOME runtime.
|
||||
- Make sure that the Flatpak dependencies are the same as in the nightly manifest, and using the
|
||||
same version.
|
||||
- Build the latest version of Fractal, identified by its tag _and_ commit hash.
|
||||
|
||||
If the list of Rust modules to build changes, the `MODULES` variable in the
|
||||
`update-cargo-sources.sh` script must also be updated.
|
||||
2. When the PR is opened, a CI job will update the `*-cargo-sources.json` files with the latest
|
||||
dependencies for the Rust modules and add a commit to the PR if necessary.
|
||||
3. Trigger a test build by posting a comment saying `bot, build`.
|
||||
|
||||
If the build succeeds, test the generated Flatpak as instructed and watch for obvious errors. If
|
||||
there are no issues, merge the PR.
|
||||
4. Merging the PR will trigger an "official" build that will then be published on Flathub or Flathub
|
||||
beta within 1 to 2 hours. If this build fails, an issue will be opened on the GitHub repository.
|
||||
The Flathub admins need to be contacted to launch it again.
|
||||
|
||||
More details about these steps can be found in the Flathub docs about [maintenance](https://docs.flathub.org/docs/for-app-authors/maintenance)
|
||||
and [updates](https://docs.flathub.org/docs/for-app-authors/updates).
|
||||
|
||||
## Getting a branch added to Damned Lies
|
||||
|
||||
Damned Lies is the GNOME translation management platform. It provides translation workflows, but
|
||||
also statistics. Even though we don’t publish any release from stable branches after the initial
|
||||
one, we add them there so we can keep track of the evolution of translation coverage.
|
||||
|
||||
1. Go to https://l10n.gnome.org/module/fractal/ and log in.
|
||||
2. Click on the pencil icon next to the branch list.
|
||||
3. In the entry at the bottom, type in the name of the new branch, then click on the Save button.
|
||||
4. Assign the newly added branch to the “Other Apps (stable)” Release, unassign the previous one.
|
||||
5. Hit Save again for the assignments to take effect.
|
@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
export DIST="$1"
|
||||
export SOURCE_ROOT="$2"
|
||||
|
||||
cd "$SOURCE_ROOT"
|
||||
mkdir "$DIST"/.cargo
|
||||
cargo vendor | sed 's/^directory = ".*"/directory = "vendor"/g' >> $DIST/.cargo/config.toml
|
||||
# Move vendor into dist tarball directory
|
||||
mv vendor "$DIST"
|
@ -1,11 +1,11 @@
|
||||
{
|
||||
"app-id": "org.gnome.Fractal.Devel",
|
||||
"id": "org.gnome.Fractal.Devel",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "master",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"sdk-extensions": [
|
||||
"org.freedesktop.Sdk.Extension.rust-stable",
|
||||
"org.freedesktop.Sdk.Extension.llvm16"
|
||||
"org.freedesktop.Sdk.Extension.llvm20"
|
||||
],
|
||||
"command": "fractal",
|
||||
"finish-args": [
|
||||
@ -20,9 +20,10 @@
|
||||
"--env=RUST_BACKTRACE=1"
|
||||
],
|
||||
"build-options": {
|
||||
"append-ld-library-path": "/usr/lib/sdk/llvm16/lib",
|
||||
"append-path": "/usr/lib/sdk/llvm16/bin:/usr/lib/sdk/rust-stable/bin",
|
||||
"append-ld-library-path": "/usr/lib/sdk/llvm20/lib",
|
||||
"append-path": "/usr/lib/sdk/llvm20/bin:/usr/lib/sdk/rust-stable/bin",
|
||||
"env": {
|
||||
"RUSTFLAGS": "-C force-frame-pointers=yes",
|
||||
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER": "clang",
|
||||
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\"",
|
||||
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER": "clang",
|
||||
@ -37,19 +38,60 @@
|
||||
]
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"name": "grass",
|
||||
"buildsystem": "simple",
|
||||
"build-options": {
|
||||
"env": {
|
||||
"CARGO_HOME": "/run/build/grass/cargo"
|
||||
}
|
||||
},
|
||||
"build-commands": [
|
||||
"cargo build --release --locked",
|
||||
"mkdir -p /app/bin",
|
||||
"install -D ./target/release/grass /app/bin/"
|
||||
],
|
||||
"cleanup": ["*"],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/connorskees/grass",
|
||||
"tag": "0.13.4",
|
||||
"commit": "e0bb9e2eabfc3a58e42b03089cd7b22c68d09d0b",
|
||||
"disable-submodules": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "protobuf-c",
|
||||
"buildsystem": "autotools",
|
||||
"config-opts": [
|
||||
"--disable-protoc"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/protobuf-c/protobuf-c.git",
|
||||
"tag": "v1.5.2",
|
||||
"commit": "4719fdd7760624388c2c5b9d6759eb6a47490626"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "libshumate",
|
||||
"buildsystem": "meson",
|
||||
"config-opts": [
|
||||
"-Dgir=false",
|
||||
"-Dvapi=false",
|
||||
"-Dgtk_doc=false"
|
||||
"-Dgtk_doc=false",
|
||||
"-Dvector_renderer=true"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://download.gnome.org/sources/libshumate/1.1/libshumate-1.1.0.tar.xz",
|
||||
"sha256": "b3b7c4c2d3002f37b951c9ca99b09275d0aa82265c69f53374ce12faefd3b14e"
|
||||
"type": "git",
|
||||
"url": "https://gitlab.gnome.org/GNOME/libshumate.git",
|
||||
"tag": "1.4.0",
|
||||
"commit": "06021e35f0d479612fb1a3af91a73ba562175e03"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,126 +0,0 @@
|
||||
# GNOME Code of Conduct
|
||||
|
||||
Thank you for being a part of the GNOME project. We value your participation and want everyone to have an enjoyable and fulfilling experience. Accordingly, all participants are expected to follow this Code of Conduct, and to show respect, understanding, and consideration to one another. Thank you for helping make this a welcoming, friendly community for everyone.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies to all online GNOME community spaces, including, but not limited to:
|
||||
|
||||
* Issue tracking systems - bugzilla.gnome.org
|
||||
* Documentation and tutorials - developer.gnome.org
|
||||
* Code repositories - git.gnome.org and gitlab.gnome.org
|
||||
* Mailing lists - mail.gnome.org
|
||||
* Wikis - wiki.gnome.org
|
||||
* Chat and forums - irc.gnome.org, discourse.gnome.org, GNOME Telegram channels, and GNOME groups and channels on Matrix.org (including bridges to GNOME IRC channels)
|
||||
* Community spaces hosted on gnome.org infrastructure
|
||||
* Any other channels or groups which exist in order to discuss GNOME project activities
|
||||
|
||||
Communication channels and private conversations that are normally out of scope may be considered in scope if a GNOME participant is being stalked or harassed. Social media conversations may be considered in-scope if the incident occurred under a GNOME event hashtag, or when an official GNOME account on social media is tagged, or within any other discussion about GNOME. The GNOME Foundation reserves the right to take actions against behaviors that happen in any context, if they are deemed to be relevant to the GNOME project and its participants.
|
||||
|
||||
All participants in GNOME online community spaces are subject to the Code of Conduct. This includes GNOME Foundation board members, corporate sponsors, and paid employees. This also includes volunteers, maintainers, leaders, contributors, contribution reviewers, issue reporters, GNOME users, and anyone participating in discussion in GNOME online spaces.
|
||||
|
||||
## Reporting an Incident
|
||||
|
||||
If you believe that someone is violating the Code of Conduct, or have
|
||||
any other concerns, please [contact the Code of Conduct committee](https://wiki.gnome.org/Foundation/CodeOfConduct/ReporterGuide).
|
||||
|
||||
## Our Standards
|
||||
|
||||
The GNOME online community is dedicated to providing a positive experience for everyone, regardless of:
|
||||
|
||||
* age
|
||||
* body size
|
||||
* caste
|
||||
* citizenship
|
||||
* disability
|
||||
* education
|
||||
* ethnicity
|
||||
* familial status
|
||||
* gender expression
|
||||
* gender identity
|
||||
* genetic information
|
||||
* immigration status
|
||||
* level of experience
|
||||
* nationality
|
||||
* personal appearance
|
||||
* pregnancy
|
||||
* race
|
||||
* religion
|
||||
* sex characteristics
|
||||
* sexual orientation
|
||||
* sexual identity
|
||||
* socio-economic status
|
||||
* tribe
|
||||
* veteran status
|
||||
|
||||
### Community Guidelines
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* **Be friendly.** Use welcoming and inclusive language.
|
||||
* **Be empathetic.** Be respectful of differing viewpoints and experiences.
|
||||
* **Be respectful.** When we disagree, we do so in a polite and constructive manner.
|
||||
* **Be considerate.** Remember that decisions are often a difficult choice between competing priorities. Focus on what is best for the community. Keep discussions around technology choices constructive and respectful.
|
||||
* **Be patient and generous.** If someone asks for help it is because they need it. When documentation is available that answers the question, politely point them to it. If the question is off-topic, suggest a more appropriate online space to seek help.
|
||||
* **Try to be concise.** Read the discussion before commenting in order to not repeat a point that has been made.
|
||||
|
||||
### Inappropriate Behavior
|
||||
|
||||
Community members asked to stop any inappropriate behavior are expected to comply immediately.
|
||||
|
||||
We want all participants in the GNOME community have the best possible experience they can. In order to be clear what that means, we've provided a list of examples of behaviors that are inappropriate for GNOME community spaces:
|
||||
|
||||
* **Deliberate intimidation, stalking, or following.**
|
||||
* **Sustained disruption of online discussion, talks, or other events.** Sustained disruption of events, online discussions, or meetings, including talks and presentations, will not be tolerated. This includes 'Talking over' or 'heckling' event speakers or influencing crowd actions that cause hostility in event sessions. Sustained disruption also includes drinking alcohol to excess or using recreational drugs to excess, or pushing others to do so.
|
||||
* **Harassment of people who don't drink alcohol.** We do not tolerate derogatory comments about those who abstain from alcohol or other substances. We do not tolerate pushing people to drink, talking about their abstinence or preferences to others, or pressuring them to drink - physically or through jeering.
|
||||
* **Sexist, racist, homophobic, transphobic, ableist language or otherwise exclusionary language.** This includes deliberately referring to someone by a gender that they do not identify with, and/or questioning the legitimacy of an individual's gender identity. If you're unsure if a word is derogatory, don't use it. This also includes repeated subtle and/or indirect discrimination.
|
||||
* **Unwelcome sexual attention or behavior that contributes to a sexualized environment.** This includes sexualized comments, jokes or imagery in interactions, communications or presentation materials, as well as inappropriate touching, groping, or sexual advances. Sponsors should not use sexualized images, activities, or other material. Meetup organizing staff and other volunteer organizers should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment.
|
||||
* **Unwelcome physical contact.** This includes touching a person without permission, including sensitive areas such as their hair, pregnant stomach, mobility device (wheelchair, scooter, etc) or tattoos. This also includes physically blocking or intimidating another person. Physical contact or simulated physical contact (such as emojis like "kiss") without affirmative consent is not acceptable. This includes sharing or distribution of sexualized images or text.
|
||||
* **Violence or threats of violence.** Violence and threats of violence are not acceptable - online or offline. This includes incitement of violence toward any individual, including encouraging a person to commit self-harm. This also includes posting or threatening to post other people's personally identifying information ("doxxing") online.
|
||||
* **Influencing or encouraging inappropriate behavior.** If you influence or encourage another person to violate the Code of Conduct, you may face the same consequences as if you had violated the Code of Conduct.
|
||||
* **Possession of an offensive weapon at a GNOME event.** This includes anything deemed to be a weapon by the event organizers.
|
||||
|
||||
The GNOME community prioritizes marginalized people's safety over privileged people's comfort. The committee will not act on complaints regarding:
|
||||
|
||||
* "Reverse"-isms, including "reverse racism," "reverse sexism," and "cisphobia"
|
||||
* Reasonable communication of boundaries, such as "leave me alone," "go away," or "I'm not discussing this with you."
|
||||
* Criticizing racist, sexist, cissexist, or otherwise oppressive behavior or assumptions
|
||||
* Communicating boundaries or criticizing oppressive behavior in a "tone" you don't find congenial
|
||||
|
||||
The examples listed above are not against the Code of Conduct. If you have questions about the above statements, please [read this document](https://github.com/sagesharp/code-of-conduct-template/blob/master/code-of-conduct/example-reversisms.md#supporting-diversity).
|
||||
|
||||
If a participant engages in behavior that violates this code of conduct, the GNOME Code of Conduct committee may take any action they deem appropriate. Examples of consequences are outlined in the [Committee Procedures Guide](https://wiki.gnome.org/Foundation/CodeOfConduct/CommitteeProcedures).
|
||||
|
||||
## Procedure for Handling Incidents
|
||||
|
||||
* [Reporter Guide](https://wiki.gnome.org/Foundation/CodeOfConduct/ReporterGuide)
|
||||
|
||||
* [Moderator Procedures](https://wiki.gnome.org/Foundation/CodeOfConduct/ModeratorProcedures)
|
||||
|
||||
* [Committee Procedures Guide](https://wiki.gnome.org/Foundation/CodeOfConduct/CommitteeProcedures)
|
||||
|
||||
## License
|
||||
|
||||
The GNOME Online Code of Conduct is licensed under a [Creative Commons Attribution Share-Alike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/)
|
||||
|
||||

|
||||
|
||||
## Attribution
|
||||
|
||||
The GNOME Online Code of Conduct was forked from the example policy from the [Geek Feminism wiki, created by the Ada Initiative and other volunteers](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy), which is under a Creative Commons Zero license.
|
||||
|
||||
Additional language was incorporated and modified from the following Codes of Conduct:
|
||||
|
||||
* [Citizen Code of Conduct](http://citizencodeofconduct.org/) is licensed [Creative Commons Attribution Share-Alike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/).
|
||||
* [Code of Conduct template](https://github.com/sagesharp/code-of-conduct-template/) is licensed [Creative Commons Attribution Share-Alike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/) by [Otter Tech](https://otter.technology/code-of-conduct-training)
|
||||
* [Contributor Covenant version 1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct) (licensed [CC BY 4.0](https://github.com/ContributorCovenant/contributor_covenant/blob/master/LICENSE.md))
|
||||
* [Data Carpentry Code of Conduct](https://docs.carpentries.org/topic_folders/policies/index_coc.html) is licensed [Creative Commons Attribution 4.0 License](https://creativecommons.org/licenses/by/4.0/)
|
||||
* [Django Project Code of Conduct](https://www.djangoproject.com/conduct/) is licensed under a [Creative Commons Attribution 3.0 Unported License](http://creativecommons.org/licenses/by/3.0/)
|
||||
* [Fedora Code of Conduct](http://fedoraproject.org/code-of-conduct)
|
||||
* [Geek Feminism Anti-harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy) which is under a [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/)
|
||||
* [Previous GNOME Foundation Code of Conduct](https://wiki.gnome.org/action/recall/Foundation/CodeOfConduct/Old)
|
||||
* [LGBTQ in Technology Slack Code of Conduct](https://lgbtq.technology/coc.html) licensed [Creative Commons Zero](https://creativecommons.org/publicdomain/zero/1.0/)
|
||||
* [Mozilla Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/) is licensed [Creative Commons Attribution-ShareAlike 3.0 Unported License](https://creativecommons.org/licenses/by-sa/3.0/).
|
||||
* [Python Mentors Code of Conduct](http://pythonmentors.com/)
|
||||
* [Speak Up! Community Code of Conduct](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html), licensed under a [Creative Commons Attribution 3.0 Unported License](http://creativecommons.org/licenses/by/3.0/)
|
||||
|
@ -35,7 +35,7 @@ if profile == 'Devel'
|
||||
appstream_version += '-' + devel_version
|
||||
|
||||
development_release = '''
|
||||
<release version="@0@" type="development" date="@1@">
|
||||
<release version="@0@" type="snapshot" date="@1@">
|
||||
<description>
|
||||
<p>Development release.</p>
|
||||
</description>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<id>@app-id@</id>
|
||||
<launchable type="desktop-id">@app-id@.desktop</launchable>
|
||||
<name>Fractal</name>
|
||||
<summary>Matrix group messaging app</summary>
|
||||
<summary>Chat on Matrix</summary>
|
||||
<description>
|
||||
<p>
|
||||
Fractal is a Matrix messaging app for GNOME written in Rust. Its interface is optimized for
|
||||
@ -15,39 +15,45 @@
|
||||
<ul>
|
||||
<li>Find rooms to discuss your favorite topics, or talk privately to people, securely thanks to end-to-end encryption</li>
|
||||
<li>Send rich formatted messages, files, or your current location</li>
|
||||
<li>Reply to specific messages, react with emoji, edit or remove messages</li>
|
||||
<li>Reply to specific messages, react with emoji, mention users or rooms, edit or remove messages</li>
|
||||
<li>View images, and play audio and video directly in the conversation</li>
|
||||
<li>See who has read messages, and who is typing</li>
|
||||
<li>Log into multiple accounts at once (with Single-Sign On support)</li>
|
||||
</ul>
|
||||
</description>
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#bdfbff</color>
|
||||
<color type="primary" scheme_preference="dark">#1a5fb4</color>
|
||||
</branding>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0+</project_license>
|
||||
<developer_name>The Fractal Team</developer_name>
|
||||
<developer id="org.gnome.fractal">
|
||||
<name>The Fractal Team</name>
|
||||
</developer>
|
||||
<update_contact>jsparber@gnome.org</update_contact>
|
||||
<translation type="gettext">fractal</translation>
|
||||
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image type="source">https://gitlab.gnome.org/GNOME/fractal/raw/main/screenshots/main.png</image>
|
||||
<image type="source">https://gitlab.gnome.org/World/fractal/raw/fractal-12/screenshots/main.png</image>
|
||||
<caption>Fractal’s main window</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image type="source">https://gitlab.gnome.org/GNOME/fractal/raw/main/screenshots/media-history.png</image>
|
||||
<image type="source">https://gitlab.gnome.org/World/fractal/raw/fractal-12/screenshots/media-history.png</image>
|
||||
<caption>View the media history of a Matrix room</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image type="source">https://gitlab.gnome.org/GNOME/fractal/raw/main/screenshots/adaptive.png</image>
|
||||
<image type="source">https://gitlab.gnome.org/World/fractal/raw/fractal-12/screenshots/adaptive.png</image>
|
||||
<caption>Fractal’s interface adapts to small screens</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<url type="homepage">https://gitlab.gnome.org/GNOME/fractal</url>
|
||||
<url type="bugtracker">https://gitlab.gnome.org/GNOME/fractal/issues/</url>
|
||||
<url type="homepage">https://gitlab.gnome.org/World/fractal</url>
|
||||
<url type="bugtracker">https://gitlab.gnome.org/World/fractal/issues/</url>
|
||||
<url type="donation">https://www.gnome.org/donate/</url>
|
||||
<url type="translate">https://l10n.gnome.org/module/fractal/</url>
|
||||
<url type="contact">https://matrix.to/#/#fractal:gnome.org</url>
|
||||
<url type="contribute">https://gitlab.gnome.org/GNOME/fractal/-/blob/main/CONTRIBUTING.md</url>
|
||||
<url type="contribute">https://gitlab.gnome.org/World/fractal/-/blob/main/CONTRIBUTING.md</url>
|
||||
|
||||
<requires>
|
||||
<display_length compare="ge">360</display_length>
|
||||
@ -65,69 +71,343 @@
|
||||
</content_rating>
|
||||
|
||||
<releases>@development-release@
|
||||
<release version="6~rc" type="development" date="2024-01-04">
|
||||
<release version="12" type="stable" date="2025-08-11">
|
||||
<description>
|
||||
<p>
|
||||
It is a new year 🎆️, and what better to way to celebrate this than to release Fractal
|
||||
6.rc? It has been only 2 weeks since our latest beta release, but we have been hard at
|
||||
work during the holidays.
|
||||
</p>
|
||||
<p>
|
||||
Here is an excerpt:
|
||||
Knock, knock, knock… on rooms, baby 🎵 Ooh ooh ooh ooh ooh ooh 🎶 That's right, Fractal 12
|
||||
adds support for knocking, among other things. Read all about the improvements since 11.2:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Matrix URIs can be opened with Fractal, it is even registered as a handler for the
|
||||
matrix scheme
|
||||
Requesting invites to rooms (aka knocking) is now possible, as is enabling such requests
|
||||
for room admins.
|
||||
</li>
|
||||
<li>
|
||||
Our Join Room dialog now shows some room details as a preview upon entering an
|
||||
identifier or URI
|
||||
The upcoming room version 12 is supported, with the special power level of room
|
||||
creators.
|
||||
</li>
|
||||
<li>
|
||||
The verification flow was rewritten to rely more on the Matrix Rust SDK, hopefully
|
||||
solving most issues that occurred before
|
||||
A room can be marked as unread via the context menu in the sidebar.
|
||||
</li>
|
||||
<li>
|
||||
Room members now have a profile page that allows, among other things, to kick, ban or
|
||||
ignore them
|
||||
You can now see if a section in the sidebar has any notifications or activity when it is
|
||||
collapsed.
|
||||
</li>
|
||||
<li>Speaking of ignoring users, the list can be managed from the account settings</li>
|
||||
<li>
|
||||
The dialog to view an event’s source was reworked to show more details about the
|
||||
event
|
||||
Clicking on the name of the sender of a message adds a mention to them in the composer.
|
||||
</li>
|
||||
<li>
|
||||
The safety setting to hide media previews in rooms is now synced between Matrix clients
|
||||
and we added another safety setting (which is also synced) to hide avatars in invites.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
… and a lot of other improvements, fixes and new translations thanks to all our
|
||||
contributors, and our upstream projects. As the version implies, it should be mostly
|
||||
stable and we expect to only include minor improvements until the release of Fractal 6.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="6~beta" type="development" date="2023-12-21">
|
||||
<description>
|
||||
<p>
|
||||
Even though Fractal 5 was released only 1 month ago, development has been going at a
|
||||
steady pace with a few new contributors, so we want our users to benefit from our
|
||||
progress.
|
||||
</p>
|
||||
<p>
|
||||
The staff’s picks:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Restoring sessions from Secret Services other than GNOME Keyring has been fixed</li>
|
||||
<li>Times follow the format (12h or 24h) from the system settings</li>
|
||||
<li>Media history works in encrypted rooms</li>
|
||||
<li>The accessibility of the sidebar was improved</li>
|
||||
<li>More notifications settings were added, you can now set global and per-room behavior and even manage your keywords</li>
|
||||
<li>A bunch of refactoring, notably the port to the <code>glib::Properties</code> macro from gtk-rs that helped us removed almost <em>3000</em> lines of code!</li>
|
||||
</ul>
|
||||
<p>
|
||||
As usual, this release includes other improvements, fixes and new translations thanks to
|
||||
all our contributors, and our upstream projects. As the version implies, there might be a
|
||||
slight risk of regressions, but it should be mostly stable. If all goes well the next
|
||||
step is the release candidate!
|
||||
all our contributors, and our upstream projects.
|
||||
</p>
|
||||
<p>
|
||||
We want to address special thanks to the translators who worked on this version. We know
|
||||
this is a huge undertaking and have a deep appreciation for what you’ve done. If you want
|
||||
to help with this effort, head over to Damned Lies.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="11.2" type="stable" date="2025-06-10">
|
||||
<description>
|
||||
<p>
|
||||
This version updates the matrix-sdk-crypto dependency to include a fix for a high severity
|
||||
security issue.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="11.1" type="stable" date="2025-05-15">
|
||||
<description>
|
||||
<p>
|
||||
Due to a pesky bug that makes Fractal crash when our users attempt to start a
|
||||
verification, we are releasing Fractal 11.1 only 2 weeks after Fractal 11. And while we’re
|
||||
at it we also backported a few fixes for smaller paper cuts!
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="11" type="stable" date="2025-05-01">
|
||||
<description>
|
||||
<p>
|
||||
A new version of Fractal numbered Eleven? Stranger things have happened… Features come
|
||||
running up that hill:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Support for login using the OAuth 2.0 API (as used by matrix.org, which recently made
|
||||
the switch to Matrix Authentication Service)
|
||||
</li>
|
||||
<li>
|
||||
Overhaul of the page that lists user sessions, with details moved to subpages, for a
|
||||
less cluttered feel, and allowing to rename sessions!
|
||||
</li>
|
||||
<li>
|
||||
Rearranged account settings, with a new Safety tab that includes a setting to toggle
|
||||
media preview visibility
|
||||
</li>
|
||||
<li>
|
||||
BlurHashes for images and videos, that are used as placeholders while the media is
|
||||
loading or if the preview is disabled
|
||||
</li>
|
||||
<li>
|
||||
Contiguous state events are grouped behind a single item
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
As usual, this release includes other improvements and fixes thanks to all our
|
||||
contributors, and our upstream projects.
|
||||
</p>
|
||||
<p>
|
||||
We want to address special thanks to the translators who worked on this version. We know
|
||||
this is a huge undertaking and have a deep appreciation for what you’ve done. If you want
|
||||
to help with this effort, head over to l10n.gnome.org.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="10.1" type="stable" date="2025-02-10">
|
||||
<description>
|
||||
<p>
|
||||
Due to a couple of unfortunate but important regressions in Fractal 10, we are releasing
|
||||
Fractal 10.1 so our users don’t have to wait too long for them to be addressed. This minor
|
||||
version fixes the following issues:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Some rooms were stuck in an unread state, even after reading them or marking them as
|
||||
read.
|
||||
</li>
|
||||
<li>
|
||||
Joining or creating a room would crash the app.
|
||||
</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="10" type="stable" date="2025-01-30">
|
||||
<description>
|
||||
<p>
|
||||
How are you going to find your friends and coordinate end of day drinks when you’re lost
|
||||
in the middle of a large crowd in a big city? With the new version of your favorite Matrix
|
||||
client, of course! Here is Fractal 10.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
The QR code scanning code has been ported to libaperture, the library behind GNOME
|
||||
Camera. This should result in better performance and more reliability.
|
||||
</li>
|
||||
<li>
|
||||
OAuth 2.0 compatibility was added, to make sure that we are ready for the upcoming
|
||||
authentication changes for matrix.org.
|
||||
</li>
|
||||
<li>
|
||||
Pills for users and rooms mentions show consistently in the right place instead of
|
||||
seemingly random places, getting rid of one of our oldest and most annoying bug.
|
||||
</li>
|
||||
<li>
|
||||
Attachments go through the send queue, ensuring correct order of all messages and
|
||||
improving the visual feedback.
|
||||
</li>
|
||||
<li>
|
||||
Videos were often not playing after loading in the room history. This was fixed, and we
|
||||
also show properly when an error occurred.
|
||||
</li>
|
||||
<li>
|
||||
We were downloading too many different sizes for avatar images, which would fill the
|
||||
media cache needlessly. We now only download a couple of sizes. This has the extra
|
||||
benefit of fixing blurry or missing thumbnails in notifications.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
As usual, this release includes other improvements and fixes thanks to all our
|
||||
contributors, and our upstream projects.
|
||||
</p>
|
||||
<p>
|
||||
We want to address special thanks to the translators who worked on this version. We know
|
||||
this is a huge undertaking and have a deep appreciation for what you’ve done. If you want
|
||||
to help with this effort, head over to l10n.gnome.org.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="9" type="stable" date="2024-10-30">
|
||||
<description>
|
||||
<p>
|
||||
What’s that behind you⁉️ 😱 Oh, that’s a new Fractal release❣️ 😁 🎃
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
We switched to the glycin library (the same one used by GNOME Image Viewer) to load
|
||||
images, allowing us to fix several issues, like supporting more animated formats and
|
||||
SVGs and respecting EXIF orientation.
|
||||
</li>
|
||||
<li>
|
||||
The annoying bug where some rooms would stay as unread even after opening them is now a
|
||||
distant memory.
|
||||
</li>
|
||||
<li>
|
||||
The media cache uses its own database that you can delete if you want to free some space
|
||||
on your system. It will also soon be able to clean up unused media files to prevent it
|
||||
from growing indefinitely.
|
||||
</li>
|
||||
<li>
|
||||
Sometimes the day separators would show up with the wrong date, not anymore!
|
||||
</li>
|
||||
<li>
|
||||
We migrated to the new GTK 4.16 and libadwaita 1.6 APIs, including CSS variables,
|
||||
AdwButtonRow and AdwSpinner.
|
||||
</li>
|
||||
<li>
|
||||
We used to only rely on the secrets provider to tell us which Matrix accounts are
|
||||
logged-in, which caused issues for people sharing their secrets between devices. Now we
|
||||
also make sure that there is a data folder for a given session before trying to restore
|
||||
it.
|
||||
</li>
|
||||
<li>
|
||||
Our notifications are categorized as coming from an instant messenger, so graphical
|
||||
shells that support it, such as Phosh, can play a sound for them.
|
||||
</li>
|
||||
<li>
|
||||
Some room settings are hidden for direct chats, because it does not make sense to change
|
||||
them in this type of room.
|
||||
</li>
|
||||
<li>
|
||||
The size of the headerbar would change depending on whether the room has a topic or not.
|
||||
This will not happen anymore.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
As usual, this release includes other improvements and fixes thanks to all our
|
||||
contributors, and our upstream projects.
|
||||
</p>
|
||||
<p>
|
||||
We want to address special thanks to the translators who worked on this version. We know
|
||||
this is a huge undertaking and have a deep appreciation for what you’ve done. If you want
|
||||
to help with this effort, head over to Damned Lies.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="8" type="stable" date="2024-08-01">
|
||||
<description>
|
||||
<p>
|
||||
Let’s see the main improvements:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Mentions are sent intentionally
|
||||
</li>
|
||||
<li>
|
||||
Authenticated media are supported
|
||||
</li>
|
||||
<li>
|
||||
Draft messages are kept per-room and persisted across restarts
|
||||
</li>
|
||||
<li>
|
||||
More links are detected in messages and room descriptions
|
||||
</li>
|
||||
<li>
|
||||
Collapsed categories in the sidebar are remembered between restarts, with the
|
||||
“Historical” category collapsed by default
|
||||
</li>
|
||||
<li>
|
||||
A banner appears when synchronization with the homeserver fails too many times in a row
|
||||
</li>
|
||||
<li>
|
||||
The verification and account recovery processes have been polished
|
||||
</li>
|
||||
<li>
|
||||
HTML rendering has been improved, with the support of new elements and attributes
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
As usual, this release includes other improvements and fixes thanks to all our
|
||||
contributors, and our upstream projects.
|
||||
</p>
|
||||
<p>
|
||||
We want to address special thanks to the translators who worked on this version. We know
|
||||
this is a huge undertaking and have a deep appreciation for what you’ve done. If you want
|
||||
to help with this effort, head over to Damned Lies.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="7" type="stable" date="2024-05-02">
|
||||
<description>
|
||||
<p>
|
||||
Here comes Fractal 7, with extended encryption support and improved accessibility.
|
||||
Server-side key backup and account recovery have been added, bringing greater security.
|
||||
Third-party verification has received some bug fixes and improvements. Amongst the many
|
||||
accessibility improvements, navigability has increased, especially in the room history.
|
||||
But that’s not all we’ve been up to in the past three months:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Messages that failed to send can now be retried or discarded.
|
||||
</li>
|
||||
<li>
|
||||
Messages can be reported to server admins for moderation.
|
||||
</li>
|
||||
<li>
|
||||
Room details are now considered complete, with the addition of room address management,
|
||||
permissions, and room upgrade.
|
||||
</li>
|
||||
<li>
|
||||
A new member menu appears when clicking on an avatar in the room history. It offers a
|
||||
quick way to do many actions related to that person, including opening a direct chat
|
||||
with them and moderating them.
|
||||
</li>
|
||||
<li>
|
||||
Pills are clickable and allow to directly go to a room or member profile.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
As usual, this release includes other improvements, fixes and new translations thanks to
|
||||
all our contributors, and our upstream projects.
|
||||
</p>
|
||||
<p>
|
||||
We want to address special thanks to the translators who worked on this version. We know
|
||||
this is a huge undertaking and have a deep appreciation for what you’ve done. If you want
|
||||
to help with this effort, head over to Damned Lies.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="6" type="stable" date="2024-01-18">
|
||||
<description>
|
||||
<p>
|
||||
Barely 2 months after Fractal 5, we feel there have been enough improvements to grant a
|
||||
new stable release. You have probably noticed that we have adopted a version scheme
|
||||
similar to GNOME and will bump the major version with each new release.
|
||||
</p>
|
||||
<p>
|
||||
The list of goodies:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Fractal can open Matrix URIs, it is even registered as a handler for the “matrix”
|
||||
scheme
|
||||
</li>
|
||||
<li>
|
||||
The verification flow was rewritten, hopefully solving most verification issues
|
||||
</li>
|
||||
<li>
|
||||
Room members can be kicked, banned or ignored from their profile
|
||||
</li>
|
||||
<li>
|
||||
More notifications settings, global or per-room, were added
|
||||
</li>
|
||||
<li>
|
||||
Times follow the format (12h or 24h) from the system settings
|
||||
</li>
|
||||
<li>
|
||||
Tab auto-completion also works for mentioning public rooms, just start your query with
|
||||
“#”
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
This version is fully translated into 6 languages 🙌️ and we hope to get even more 📈 for
|
||||
the next one! Head over to Damned Lies if you want to give a hand.
|
||||
</p>
|
||||
<p>
|
||||
We would also like to thank our new and returning contributors and our upstream projects.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
|
@ -5,47 +5,15 @@
|
||||
viewBox="0 0 89.958331 52.916668"
|
||||
version="1.1"
|
||||
id="svg8662"
|
||||
sodipodi:docname="welcome-export.svg"
|
||||
inkscape:version="1.1-rc (52f87abb86, 2021-05-02)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview47"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.99583586"
|
||||
inkscape:cx="303.76492"
|
||||
inkscape:cy="15.062723"
|
||||
inkscape:current-layer="svg8662"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:snap-intersection-paths="true"
|
||||
inkscape:snap-midpoints="true"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-text-baseline="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid1470" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs8656">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient39832">
|
||||
<stop
|
||||
style="stop-color:#3584e4;stop-opacity:1"
|
||||
@ -57,7 +25,6 @@
|
||||
id="stop39830" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient24559">
|
||||
<stop
|
||||
style="stop-color:#ed333b;stop-opacity:1;"
|
||||
@ -69,7 +36,6 @@
|
||||
id="stop24557" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient12858">
|
||||
<stop
|
||||
style="stop-color:#f66151;stop-opacity:1"
|
||||
@ -103,7 +69,6 @@
|
||||
id="stop8143" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient976"
|
||||
id="radialGradient1221"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -113,7 +78,6 @@
|
||||
fy="212"
|
||||
r="60" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient976">
|
||||
<stop
|
||||
style="stop-color:#f8e45c;stop-opacity:1"
|
||||
@ -125,7 +89,6 @@
|
||||
id="stop974" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1117"
|
||||
id="radialGradient1223"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -136,7 +99,6 @@
|
||||
fy="224"
|
||||
r="16" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1117">
|
||||
<stop
|
||||
style="stop-color:#5e5c64;stop-opacity:1"
|
||||
@ -148,7 +110,6 @@
|
||||
id="stop1115" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1117"
|
||||
id="radialGradient1225"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -159,7 +120,6 @@
|
||||
fy="224"
|
||||
r="16" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1325">
|
||||
<stop
|
||||
style="stop-color:#f66151;stop-opacity:1"
|
||||
@ -175,7 +135,6 @@
|
||||
id="stop1323" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient976"
|
||||
id="radialGradient1393-0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -186,7 +145,6 @@
|
||||
r="60"
|
||||
gradientTransform="matrix(0.26458333,0,0,0.26458333,10.972649,-67.464743)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1325"
|
||||
id="radialGradient1395-6"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -197,7 +155,6 @@
|
||||
fy="29.856375"
|
||||
r="16.084499" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1325"
|
||||
id="radialGradient1397-9-9"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -208,7 +165,6 @@
|
||||
fy="29.856375"
|
||||
r="16.084499" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12858"
|
||||
id="linearGradient12860"
|
||||
x1="3467.3748"
|
||||
@ -217,7 +173,6 @@
|
||||
y2="-383.00339"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8145"
|
||||
id="linearGradient15076"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -227,7 +182,6 @@
|
||||
x2="-3272.5"
|
||||
y2="-438.48035" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient39832"
|
||||
id="radialGradient39804"
|
||||
cx="3496.6987"
|
||||
@ -238,7 +192,6 @@
|
||||
gradientTransform="matrix(0.61314223,0,0,0.49927324,-2207.2336,232.19657)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8161"
|
||||
id="linearGradient40220"
|
||||
x1="428.48035"
|
||||
@ -248,7 +201,6 @@
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.85000059,0,0,0.85000059,64.271801,-492.37307)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient24559"
|
||||
id="linearGradient63749"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
@ -337,14 +289,10 @@
|
||||
id="g137264"
|
||||
style="stroke-width:0.666667">
|
||||
<path
|
||||
sodipodi:nodetypes="sssscccsssss"
|
||||
style="display:inline;fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
|
||||
d="m -3912.0003,-233.37879 c -4.4319,0 -8,3.56799 -8,8 v 27.89844 c 0,4.43202 3.5681,8 8,8 h 36.3333 l 12.6667,12.66667 v -12.66667 h 8.3333 c 4.432,0 8,-3.56798 8,-8 v -27.89844 c 0,-4.43201 -3.568,-8 -8,-8 z"
|
||||
id="path137260"
|
||||
inkscape:connector-curvature="0" />
|
||||
id="path137260" />
|
||||
<path
|
||||
sodipodi:nodetypes="cssccccsccsccssc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path137262"
|
||||
d="m -3920.0003,-199.48035 v 2 c 0,4.43202 3.5681,8 8,8 h 36.3333 l 12.6667,12.66667 v -2 l -12.6667,-12.66667 h -36.3333 c -4.4319,0 -8,-3.56798 -8,-8 z m 73.3333,0 c 0,4.43202 -3.568,8 -8,8 h -8.3333 v 2 h 8.3333 c 4.432,0 8,-3.56798 8,-8 z"
|
||||
style="display:inline;fill:#3584e4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
|
||||
@ -374,17 +322,13 @@
|
||||
id="g137282"
|
||||
style="stroke-width:0.666667">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path137272"
|
||||
d="m -3913.6666,-217.48035 c -4.4319,0 -8,3.56798 -8,8 v 24 c 0,4.43202 3.5681,8 8,8 h 15.3333 v 12.66667 l 12.6667,-12.66667 h 45.9999 c 4.432,0 8,-3.56798 8,-8 v -24 c 0,-4.43202 -3.568,-8 -8,-8 z"
|
||||
style="display:inline;fill:#3d3846;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
|
||||
sodipodi:nodetypes="sssscccsssss" />
|
||||
style="display:inline;fill:#3d3846;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path137274"
|
||||
d="m -3921.6666,-187.48035 v 2 c 0,4.43202 3.5681,8 8,8 h 15.3333 v -2 h -15.3333 c -4.4319,0 -8,-3.56798 -8,-8 z m 89.9999,0 c 0,4.43202 -3.568,8 -8,8 h -45.9999 l -12.6667,12.66667 v 2 l 12.6667,-12.66667 h 45.9999 c 4.432,0 8,-3.56798 8,-8 z"
|
||||
style="display:inline;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
|
||||
sodipodi:nodetypes="cssccsccsccccssc" />
|
||||
style="display:inline;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
|
||||
<rect
|
||||
style="opacity:1;fill:#77767b;fill-opacity:1;stroke:none;stroke-width:9.33333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect137276"
|
||||
@ -469,13 +413,12 @@
|
||||
ry="3.175" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
|
||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:'Adwaita Sans';-inkscape-font-specification:'Adwaita Sans Ultra-Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
|
||||
x="25.548162"
|
||||
y="7.6729164"
|
||||
id="text63745"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan63743"
|
||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:4.23333px;font-family:Cantarell;-inkscape-font-specification:'Cantarell Ultra-Bold';fill:#ffffff;stroke-width:0.264583"
|
||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:4.23333px;font-family:'Adwaita Sans';-inkscape-font-specification:'Adwaita Sans Ultra-Bold';fill:#ffffff;stroke-width:0.264583"
|
||||
x="25.548162"
|
||||
y="7.6729164">999+</tspan></text>
|
||||
</g>
|
||||
@ -551,22 +494,12 @@
|
||||
rx="2"
|
||||
ry="2" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:1;vector-effect:none;fill:#e5a50a;fill-opacity:1;stroke:none;stroke-width:12.8571;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 123.82422,231.53906 A 60,60 0 0 1 64,288 60,60 0 0 1 4.17578,232.46094 60,60 0 0 0 4,236 a 60,60 0 0 0 60,60 60,60 0 0 0 60,-60 60,60 0 0 0 -0.17578,-4.46094 z"
|
||||
id="path1193" />
|
||||
<path
|
||||
sodipodi:open="true"
|
||||
sodipodi:end="3.1415927"
|
||||
sodipodi:start="0"
|
||||
sodipodi:ry="7.0068064"
|
||||
sodipodi:rx="7.6309938"
|
||||
sodipodi:cy="236.99103"
|
||||
sodipodi:cx="64"
|
||||
sodipodi:type="arc"
|
||||
id="path1195"
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#3d3846;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 71.630994,236.99103 a 7.6309938,7.0068064 0 0 1 -3.815497,6.06807 7.6309938,7.0068064 0 0 1 -7.630994,0 7.6309938,7.0068064 0 0 1 -3.815497,-6.06807" />
|
||||
<rect
|
||||
ry="8"
|
||||
@ -580,16 +513,7 @@
|
||||
<path
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#241f31;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path1199"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="64"
|
||||
sodipodi:cy="-216"
|
||||
sodipodi:rx="8"
|
||||
sodipodi:ry="8"
|
||||
sodipodi:start="0"
|
||||
sodipodi:end="3.1415927"
|
||||
sodipodi:open="true"
|
||||
transform="scale(1,-1)"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 72,-216 a 8,8 0 0 1 -4,6.9282 8,8 0 0 1 -8,0 A 8,8 0 0 1 56,-216" />
|
||||
<rect
|
||||
style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
@ -640,17 +564,13 @@
|
||||
transform="matrix(1.5,0,0,1.5,2465.0001,-75.912199)"
|
||||
id="g137294">
|
||||
<path
|
||||
sodipodi:nodetypes="sssccssss"
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
|
||||
d="m -3905.3334,-234.37879 c -4.4319,0 -8,3.56799 -8,8 v 27.33333 c 0,4.43202 3.5681,8 8,8 H -3848 c 4.432,0 8,-3.56798 8,-8 v -27.33333 c 0,-4.43201 -3.568,-8 -8,-8 z"
|
||||
id="path137290"
|
||||
inkscape:connector-curvature="0" />
|
||||
id="path137290" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path137292"
|
||||
d="m -3913.3334,-201.04546 v 2 c 0,4.43202 3.5681,8 8,8 h 19 l 12.6667,12.66667 v -2 l -12.6667,-12.66667 h -19 c -4.4319,0 -8,-3.56798 -8,-8 z m 73.3334,0 c 0,4.43202 -3.568,8 -8,8 h -25.6667 v 2 H -3848 c 4.432,0 8,-3.56798 8,-8 z"
|
||||
style="display:inline;fill:#deddda;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
|
||||
sodipodi:nodetypes="cssccccsccsccssc" />
|
||||
style="display:inline;fill:#deddda;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.00753214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
|
||||
</g>
|
||||
<rect
|
||||
y="-412.48035"
|
||||
@ -689,42 +609,28 @@
|
||||
cy="-5.023077"
|
||||
r="15.875" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="display:inline;fill:#e5a50a;fill-opacity:1;stroke:none;stroke-width:3.40177;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
|
||||
d="M 43.734473,-6.2033675 A 15.875,15.875 0 0 1 27.905982,8.735256 15.875,15.875 0 0 1 12.077491,-5.9594534 a 15.875,15.875 0 0 0 -0.04651,0.9363763 15.875,15.875 0 0 0 15.875,15.8750001 15.875,15.875 0 0 0 15.875,-15.8750001 15.875,15.875 0 0 0 -0.04651,-1.1802904 z"
|
||||
id="path1369-2" />
|
||||
<path
|
||||
sodipodi:open="true"
|
||||
sodipodi:end="3.1415927"
|
||||
sodipodi:start="0"
|
||||
sodipodi:ry="1.8538842"
|
||||
sodipodi:rx="2.0190337"
|
||||
sodipodi:cy="-4.7608676"
|
||||
sodipodi:cx="27.905983"
|
||||
sodipodi:type="arc"
|
||||
id="path1371-3"
|
||||
style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#3d3846;stroke-width:1.05833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 29.925017,-4.7608676 a 2.0190337,1.8538842 0 0 1 -1.009517,1.6055108 2.0190337,1.8538842 0 0 1 -2.019034,0 2.0190337,1.8538842 0 0 1 -1.009517,-1.6055108" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1373-7"
|
||||
d="m 24.707728,-13.490777 a 2.1168783,2.1168783 0 0 0 -1.459859,0.642337 l -0.620118,0.620117 -0.620117,-0.620117 a 2.1168783,2.1168783 0 0 0 -1.51877,-0.641302 2.1168783,2.1168783 0 0 0 -1.474329,3.6349196 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863907,-2.8639082 A 2.1168783,2.1168783 0 0 0 24.707728,-13.49083 Z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient1395-6);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient1397-9-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 35.291109,-13.490777 a 2.1168783,2.1168783 0 0 0 -1.459859,0.642337 l -0.620118,0.620117 -0.620117,-0.620117 a 2.1168783,2.1168783 0 0 0 -1.51877,-0.641302 2.1168783,2.1168783 0 0 0 -1.474329,3.6349196 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863908,-2.8639082 a 2.1168783,2.1168783 0 0 0 -1.53324,-3.6359539 z"
|
||||
id="path1375-3-5" />
|
||||
<path
|
||||
id="path1377-9"
|
||||
d="m 18.412505,-11.77202 a 2.1168783,2.1168783 0 0 0 0.60203,1.9171976 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863907,-2.8639109 a 2.1168783,2.1168783 0 0 0 0.604615,-1.9166782 2.1168783,2.1168783 0 0 1 -0.604615,1.122929 l -2.863907,2.8639074 a 1.0583333,1.0583333 0 0 1 -1.49655,0 v 0.00212 l -2.865975,-2.8659714 a 2.1168783,2.1168783 0 0 1 -0.60203,-1.123448 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
id="path1379-6-2"
|
||||
d="m 28.995838,-11.77202 a 2.1168783,2.1168783 0 0 0 0.60203,1.9171976 l 2.865975,2.8659745 v -0.00212 a 1.0583333,1.0583333 0 0 0 1.49655,0 l 2.863908,-2.8639109 a 2.1168783,2.1168783 0 0 0 0.604614,-1.9166782 2.1168783,2.1168783 0 0 1 -0.604614,1.122929 l -2.863908,2.8639074 a 1.0583333,1.0583333 0 0 1 -1.49655,0 v 0.00212 l -2.865975,-2.8659714 a 2.1168783,2.1168783 0 0 1 -0.60203,-1.123448 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c01c28;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.23333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 33 KiB |
@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 2 1 c -0.550781 0 -0.992188 0.445312 -0.992188 0.992188 l -0.007812 9.007812 c 0 0.265625 0.105469 0.519531 0.292969 0.707031 s 0.441406 0.292969 0.707031 0.292969 h 2 v -6 c 0 -1.105469 0.894531 -2 2 -2 h 5 v -2 c 0 -0.550781 -0.449219 -1 -1 -1 z m 4 4 c -0.550781 0 -1 0.449219 -1 1 v 9 c 0 0.550781 0.449219 1 1 1 h 6 l 3 -3 v -7 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -560 -844)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -560 -844)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -560 -844)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 0 3 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 v 5 c 0 0.570312 0.429688 1 1 1 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 c -1.644531 0 -3 -1.355469 -3 -3 z m 5 5 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 v 5 c 0 1.644531 -1.355469 3 -3 3 h -5 c -1.644531 0 -3 -1.355469 -3 -3 z m 2 0 v 5 c 0 0.570312 0.429688 1 1 1 h 5 c 0.570312 0 1 -0.429688 1 -1 v -5 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 765 B |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 3 2 c -1.660156 0 -3 1.339844 -3 3 v 8 c 0 1.660156 1.339844 3 3 3 h 8 c 1.660156 0 3 -1.339844 3 -3 v -4 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 v 4 c 0 0.554688 -0.445312 1 -1 1 h -8 c -0.554688 0 -1 -0.445312 -1 -1 v -8 c 0 -0.554688 0.445312 -1 1 -1 h 4 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 7 -2 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2.585938 l -5.292969 5.289062 c -0.390625 0.394532 -0.390625 1.027344 0 1.417969 s 1.023437 0.390625 1.414062 0 l 5.292969 -5.292969 v 2.585938 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.085938 -0.011719 -0.171875 -0.035156 -0.257812 c -0.023438 -0.085938 -0.054688 -0.167969 -0.101563 -0.242188 c -0.042969 -0.074219 -0.09375 -0.144531 -0.15625 -0.207031 c -0.015625 -0.011719 -0.03125 -0.023438 -0.046875 -0.035157 c -0.054687 -0.050781 -0.117187 -0.09375 -0.183594 -0.128906 c -0.035156 -0.019531 -0.074218 -0.035156 -0.113281 -0.0468748 c -0.050781 -0.0234374 -0.101562 -0.0390624 -0.15625 -0.0507812 c -0.039062 -0.0117188 -0.082031 -0.015625 -0.121093 -0.0195312 c -0.03125 -0.00781255 -0.058594 -0.00781255 -0.085938 -0.0117188 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
2
data/resources/icons/scalable/actions/hide-symbolic.svg
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 13.980469 1.988281 c -0.261719 0.007813 -0.507813 0.117188 -0.6875 0.304688 l -0.984375 0.984375 c -1.285156 -0.828125 -2.78125 -1.273438 -4.308594 -1.277344 c -3.648438 0.003906 -6.832031 2.476562 -7.738281 6.011719 c 0.460937 1.746093 1.496093 3.285156 2.941406 4.371093 l -0.910156 0.910157 c -0.261719 0.25 -0.367188 0.625 -0.273438 0.972656 c 0.089844 0.351563 0.363281 0.625 0.714844 0.714844 c 0.347656 0.09375 0.722656 -0.011719 0.972656 -0.273438 l 11 -11 c 0.296875 -0.289062 0.382813 -0.726562 0.222657 -1.105469 c -0.160157 -0.382812 -0.539063 -0.625 -0.949219 -0.613281 z m -5.980469 2.011719 c 0.957031 0 1.886719 0.347656 2.609375 0.976562 l -1.417969 1.417969 c -0.34375 -0.257812 -0.761718 -0.394531 -1.191406 -0.394531 c -1.105469 0 -2 0.894531 -2 2 c 0 0.429688 0.140625 0.847656 0.394531 1.1875 l -1.417969 1.421875 c -0.628906 -0.726563 -0.972656 -1.652344 -0.976562 -2.609375 c 0 -2.210938 1.789062 -4 4 -4 z m 7.027344 2.207031 l -3.34375 3.34375 c -0.402344 0.960938 -1.167969 1.722657 -2.125 2.128907 l -2.28125 2.277343 c 0.242187 0.027344 0.480468 0.039063 0.722656 0.042969 c 3.648438 -0.003906 6.832031 -2.476562 7.738281 -6.011719 c -0.164062 -0.617187 -0.402343 -1.214843 -0.710937 -1.78125 z m -7.527344 0.792969 c 0.277344 0 0.5 0.222656 0.5 0.5 s -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 s 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 1.5 KiB |
55
data/resources/icons/scalable/apps/org.gnome.Fractal.svg
Normal file
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="8" x2="58" y1="69.999985" y2="69.999985">
|
||||
<stop offset="0" stop-color="#4aaac9"/>
|
||||
<stop offset="0.16" stop-color="#8bddf7"/>
|
||||
<stop offset="0.32" stop-color="#4aaac9"/>
|
||||
<stop offset="1" stop-color="#4aaac9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="31.462524" x2="39" y1="113.997253" y2="113.997253">
|
||||
<stop offset="0" stop-color="#4aaac9"/>
|
||||
<stop offset="0.469318" stop-color="#74d7f7"/>
|
||||
<stop offset="1" stop-color="#4aaac9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="104" x2="120" y1="84" y2="84">
|
||||
<stop offset="0" stop-color="#1a5fb4"/>
|
||||
<stop offset="0.5" stop-color="#4296ff"/>
|
||||
<stop offset="1" stop-color="#1a5fb4"/>
|
||||
</linearGradient>
|
||||
<clipPath id="d">
|
||||
<path d="m 8 24 h 97 v 84 h -97 z m 0 0"/>
|
||||
</clipPath>
|
||||
<clipPath id="e">
|
||||
<path d="m 24 24 h 80 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -80 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0"/>
|
||||
</clipPath>
|
||||
<linearGradient id="f" gradientUnits="userSpaceOnUse" x1="55.608135" x2="71.783539" y1="100" y2="48.532928">
|
||||
<stop offset="0" stop-color="#81dffe"/>
|
||||
<stop offset="1" stop-color="#9bf8fe"/>
|
||||
</linearGradient>
|
||||
<filter id="g" height="100%" width="100%" x="0%" y="0%">
|
||||
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
|
||||
</filter>
|
||||
<mask id="h">
|
||||
<g filter="url(#g)">
|
||||
<rect fill-opacity="0.35" height="128" width="128"/>
|
||||
</g>
|
||||
</mask>
|
||||
<clipPath id="i">
|
||||
<rect height="152" width="192"/>
|
||||
</clipPath>
|
||||
<path d="m 24 28 h 72 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -72 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="url(#a)"/>
|
||||
<path d="m 24 28 h 80 c 8.835938 0 16 7.164062 16 16 v 48 c 0 8.835938 -7.164062 16 -16 16 h -80 c -8.835938 0 -16 -7.164062 -16 -16 v -48 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#53bde0"/>
|
||||
<path d="m 24 100 v 12 h 4 c 2.210938 0 4 1.789062 4 4 v 7 c 0 1.992188 1.183594 3.792969 3.011719 4.585938 c 1.828125 0.789062 3.953125 0.417968 5.40625 -0.945313 l 13.523437 -12.707031 c 1.324219 -1.242188 3.070313 -1.933594 4.882813 -1.933594 h 9.175781 v -12 z m 0 0" fill="url(#b)" fill-rule="evenodd"/>
|
||||
<path d="m 102 58.566406 h 2 c 8.835938 0 16 7.164063 16 16 v 21.433594 c 0 8.835938 -7.164062 16 -16 16 h -2 c -8.835938 0 -16 -7.164062 -16 -16 v -21.433594 c 0 -8.835937 7.164062 -16 16 -16 z m 0 0" fill="url(#c)"/>
|
||||
<path d="m 86 87 h 18 v 25 h -18 z m 0 0" fill="#1a5fb4"/>
|
||||
<path d="m 48 24 h 56 c 8.835938 0 16 7.164062 16 16 v 52 c 0 8.835938 -7.164062 16 -16 16 h -56 c -8.835938 0 -16 -7.164062 -16 -16 v -52 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#3584e4"/>
|
||||
<g clip-path="url(#d)">
|
||||
<g clip-path="url(#e)">
|
||||
<path d="m 78.804688 16.023438 l 0.527343 2.460937 c -1.207031 -0.082031 -2.417969 4.964844 -3.621093 4.988281 c -19.335938 0.371094 -38.003907 14.230469 -39.148438 34.546875 c -0.835938 14.761719 9.570312 29.839844 25.15625 30.488281 c 10.371094 0.433594 20.96875 -6.957031 21.242188 -17.925781 c 0.179687 -7.078125 -4.953126 -14.3125 -12.488282 -14.355469 c -4.683594 -0.027343 -9.484375 3.425782 -9.398437 8.429688 c 0.074219 2.980469 2.300781 6.042969 5.511719 5.902344 c 1.8125 -0.082032 3.691406 -1.488282 3.539062 -3.453125 c -0.078125 -1.042969 -0.921875 -2.128907 -2.0625 -1.996094 c -0.5625 0.066406 -1.148438 0.539063 -1.046875 1.15625 c 0.070313 0.273437 0.285156 0.570313 0.597656 0.5 c 0.121094 -0.03125 0.25 -0.144531 0.214844 -0.28125 c 0 -0.042969 -0.070313 -0.09375 -0.113281 -0.074219 c 0 0.003906 -0.070313 0.023438 0 0.035156 v 0.007813 v -0.003906 v 0.035156 c 0 0.050781 -0.09375 0.050781 -0.136719 0.03125 c -0.121094 -0.066406 -0.113281 -0.242187 -0.070313 -0.347656 c 0.164063 -0.265625 0.542969 -0.230469 0.777344 -0.074219 c 0.519532 0.367188 0.429688 1.117188 0.070313 1.558594 c -0.710938 0.898437 -2.074219 0.726562 -2.867188 0.042968 c -1.5 -1.28125 -1.167969 -3.601562 0.070313 -4.941406 c 2.167968 -2.367187 5.929687 -1.792968 8.074218 0.28125 c 3.601563 3.476563 2.652344 9.308594 -0.675781 12.597656 c -5.359375 5.292969 -14.109375 3.800782 -18.992187 -1.324218 c -7.570313 -7.953125 -5.304688 -20.664063 2.335937 -27.6875 c 11.480469 -10.550782 29.507813 -7.242188 39.363281 3.785156 c 14.414063 16.121094 9.6875 41.066406 -5.855468 54.582031 c -11.121094 9.226563 -22.246094 15.429688 -32.949219 19.4375 c -13.058594 75.445313 -75.230469 6.835938 -81.039063 -4.195312 l 0.285157 -105.054688 z m 0 0" fill="url(#f)"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="m 24 106 v 2 h 4 c 2.210938 0 4 1.789062 4 4 v 7 c 0 1.992188 1.183594 3.792969 3.011719 4.585938 c 1.828125 0.789062 3.953125 0.417968 5.40625 -0.945313 l 13.523437 -12.707031 c 1.324219 -1.242188 3.070313 -1.933594 4.882813 -1.933594 h 9.175781 v -2 z m 0 0" fill="#81dffe" fill-rule="evenodd"/>
|
||||
<g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)">
|
||||
<path d="m 173 17 h 8 c 1.65625 0 3 1.34375 3 3 v 7 c 0 1.65625 -1.34375 3 -3 3 h -8 c -1.65625 0 -3 -1.34375 -3 -3 v -7 c 0 -1.65625 1.34375 -3 3 -3 z m 0 0" fill="#241f31"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
2
data/resources/icons/scalable/status/dot-symbolic.svg
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 11.019531 7.996094 c 0 1.65625 -1.34375 3 -3 3 s -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 s 3 1.34375 3 3 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 270 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
2
data/resources/icons/scalable/status/info-symbolic.svg
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 0 c -4.410156 0 -8 3.589844 -8 8 s 3.589844 8 8 8 s 8 -3.589844 8 -8 s -3.589844 -8 -8 -8 z m 0 2 c 3.332031 0 6 2.667969 6 6 s -2.667969 6 -6 6 s -6 -2.667969 -6 -6 s 2.667969 -6 6 -6 z m 0 1.875 c -0.621094 0 -1.125 0.503906 -1.125 1.125 s 0.503906 1.125 1.125 1.125 s 1.125 -0.503906 1.125 -1.125 s -0.503906 -1.125 -1.125 -1.125 z m -1.523438 3.125 c -0.265624 0.011719 -0.476562 0.230469 -0.476562 0.5 c 0 0.277344 0.222656 0.5 0.5 0.5 h 0.5 v 3 h -0.5 c -0.277344 0 -0.5 0.222656 -0.5 0.5 s 0.222656 0.5 0.5 0.5 h 3 c 0.277344 0 0.5 -0.222656 0.5 -0.5 s -0.222656 -0.5 -0.5 -0.5 h -0.5 v -4 h -2.5 c -0.007812 0 -0.015625 0 -0.023438 0 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 813 B |
4
data/resources/icons/scalable/status/person-symbolic.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 8 1 c -1.65625 0 -3 1.34375 -3 3 s 1.34375 3 3 3 s 3 -1.34375 3 -3 s -1.34375 -3 -3 -3 z m -1.5 7 c -2.492188 0 -4.5 2.007812 -4.5 4.5 v 0.5 c 0 1.109375 0.890625 2 2 2 h 8 c 1.109375 0 2 -0.890625 2 -2 v -0.5 c 0 -2.492188 -2.007812 -4.5 -4.5 -4.5 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
After Width: | Height: | Size: 424 B |
4
data/resources/icons/scalable/status/safety-symbolic.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 8 0 c 0.554688 0 1 0.445312 1 1 v 6.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -4.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 8.5 c 0 0.5 0.5 0.5 0.5 0.5 l 1.792969 -1.707031 c 0.1875 -0.195313 0.445312 -0.300781 0.71875 -0.304688 c 1.082031 0.085938 1.144531 1.269531 0.695312 1.71875 l -3 3 c -0.707031 0.792969 -1.757812 1.289063 -2.707031 1.292969 h -6 c -3 0 -3 -3 -3 -3 v -8 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 3.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 s 1 0.445312 1 1 v 5.5 s 0 0.5 0.5 0.5 s 0.5 -0.5 0.5 -0.5 v -6.5 c 0 -0.554688 0.445312 -1 1 -1 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
After Width: | Height: | Size: 786 B |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1160 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1160 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1160 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 5 7 c -0.308594 0 -0.613281 0.089844 -0.8125 0.28125 l -3.59375 3.71875 l 3.65625 3.71875 c 0.199219 0.191406 0.441406 0.28125 0.75 0.28125 h 1 v -1 c 0 -0.257812 -0.128906 -0.527344 -0.3125 -0.71875 l -1.28125 -1.28125 h 4.59375 s 1 0 1 -1 c 0 0 0 -1 -1 -1 h -4.625 l 1.21875 -1.28125 c 0.183594 -0.191406 0.40625 -0.460938 0.40625 -0.71875 v -1 z m 0 0" fill-opacity="0.34902"/><path d="m 11 11 h 1.375 l 1.125 1.09375 l 1.09375 -1.09375 h 1.40625 v 1.46875 l -1.09375 1.0625 l 1.09375 1.0625 v 1.40625 h -1.4375 l -1.0625 -1.0625 l -1.0625 1.0625 h -1.4375 v -1.40625 l 1.0625 -1.0625 l -1.0625 -1.0625 z m 0 0"/><path d="m 11 9 c 0.308594 0 0.613281 -0.089844 0.8125 -0.28125 l 3.59375 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 h -1 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 1.28125 1.28125 h -4.59375 c -0.527344 -0.007812 -1 0.472656 -1 1 s 0.472656 1.007812 1 1 h 4.625 l -1.21875 1.28125 c -0.183594 0.191406 -0.40625 0.460938 -0.40625 0.71875 v 1 z m 0 0" fill-opacity="0.34902"/></g></svg>
|
After Width: | Height: | Size: 2.8 KiB |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1040 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1040 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1040 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 5 7 c -0.308594 0 -0.613281 0.089844 -0.8125 0.28125 l -3.59375 3.71875 l 3.65625 3.71875 c 0.199219 0.191406 0.441406 0.28125 0.75 0.28125 h 1 v -1 c 0 -0.257812 -0.128906 -0.527344 -0.3125 -0.71875 l -1.28125 -1.28125 h 4.59375 c 0.527344 0.007812 1 -0.472656 1 -1 s -0.472656 -1.007812 -1 -1 h -4.625 l 1.21875 -1.28125 c 0.183594 -0.191406 0.40625 -0.460938 0.40625 -0.71875 v -1 z m 0 0"/><path d="m 11 9 c 0.308594 0 0.613281 -0.089844 0.8125 -0.28125 l 3.59375 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 h -1 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 1.28125 1.28125 h -4.59375 c -0.527344 -0.007812 -1 0.472656 -1 1 s 0.472656 1.007812 1 1 h 4.625 l -1.21875 1.28125 c -0.183594 0.191406 -0.40625 0.460938 -0.40625 0.71875 v 1 z m 0 0"/></g></svg>
|
After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -1060 -40)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -1060 -40)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -1060 -40)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g><g fill="#222222"><path d="m 11 9 c 0.308594 0 0.613281 -0.089844 0.8125 -0.28125 l 3.59375 -3.71875 l -3.65625 -3.71875 c -0.199219 -0.191406 -0.441406 -0.28125 -0.75 -0.28125 h -1 v 1 c 0 0.257812 0.128906 0.527344 0.3125 0.71875 l 1.28125 1.28125 h -4.59375 c -0.527344 -0.007812 -1 0.472656 -1 1 s 0.472656 1.007812 1 1 h 4.625 l -1.21875 1.28125 c -0.183594 0.191406 -0.40625 0.460938 -0.40625 0.71875 v 1 z m 0 0"/><path d="m 5 7 c -0.308594 0 -0.613281 0.089844 -0.8125 0.28125 l -3.59375 3.71875 l 3.65625 3.71875 c 0.199219 0.191406 0.441406 0.28125 0.75 0.28125 h 1 v -1 c 0 -0.257812 -0.128906 -0.527344 -0.3125 -0.71875 l -1.28125 -1.28125 h 4.59375 c 0.527344 0.007812 1 -0.472656 1 -1 s -0.472656 -1.007812 -1 -1 h -4.625 l 1.21875 -1.28125 c 0.183594 -0.191406 0.40625 -0.460938 0.40625 -0.71875 v -1 z m 0 0" fill-opacity="0.34902"/></g></svg>
|
After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#bebebe" fill="#2e3436"><path d="M6 0a3 3 0 100 6 3 3 0 000-6zM4.5 7A4.49 4.49 0 000 11.5v.5c0 1 1 1 1 1h6V8.875c0-.83.587-1.554 1.355-1.79A4.532 4.532 0 007.5 7zM9 9v4h1V9z" style="marker:none" overflow="visible"/><path d="M8.875 8A.863.863 0 008 8.875v6.25c0 .492.383.875.875.875h6.25a.863.863 0 00.875-.875v-6.25A.863.863 0 0015.125 8zM11 9h2v1h-2zm0 2h2v4h-2z" style="marker:none" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 488 B |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 0 2.316406 v 5.507813 c 0 2.214843 1.183594 4.257812 3.109375 5.355469 l 4.890625 2.796874 l 4.890625 -2.796874 c 1.925781 -1.097657 3.109375 -3.140626 3.109375 -5.355469 v -5.507813 l -8 -2.285156 z m 14.726562 1.71875 l -0.726562 -0.964844 v 4.753907 c 0 1.492187 -0.804688 2.878906 -2.101562 3.617187 l -4.394532 2.511719 h 0.992188 l -4.394532 -2.511719 c -1.296874 -0.738281 -2.101562 -2.125 -2.101562 -3.617187 v -4.753907 l -0.726562 0.964844 l 7 -2 h -0.546876 z m 0 0"/><path d="m 5.941406 6.957031 l 3.058594 3.058594 c 0.292969 0.292969 0.765625 0.292969 1.058594 0 c 0.292968 -0.292969 0.292968 -0.765625 0 -1.058594 l -3.058594 -3.058593 c -0.292969 -0.292969 -0.765625 -0.292969 -1.058594 0 c -0.292968 0.292968 -0.292968 0.765624 0 1.058593 z m 0 0"/><path d="m 9 5.898438 l -3.058594 3.058593 c -0.292968 0.292969 -0.292968 0.765625 0 1.058594 c 0.292969 0.292969 0.765625 0.292969 1.058594 0 l 3.058594 -3.058594 c 0.292968 -0.292969 0.292968 -0.765625 0 -1.058593 c -0.292969 -0.292969 -0.765625 -0.292969 -1.058594 0 z m 0 0"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -640 -303)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -640 -303)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -640 -303)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>
|
After Width: | Height: | Size: 2.8 KiB |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 0 2.316406 v 5.507813 c 0 2.214843 1.183594 4.257812 3.109375 5.355469 l 4.890625 2.796874 l 4.890625 -2.796874 c 1.925781 -1.097657 3.109375 -3.140626 3.109375 -5.355469 v -5.507813 l -8 -2.285156 z m 14.726562 1.71875 l -0.726562 -0.964844 v 4.753907 c 0 1.492187 -0.804688 2.878906 -2.101562 3.617187 l -4.394532 2.511719 h 0.992188 l -4.394532 -2.511719 c -1.296874 -0.738281 -2.101562 -2.125 -2.101562 -3.617187 v -4.753907 l -0.726562 0.964844 l 7 -2 h -0.546876 z m 0 0"/><path d="m 7 4 v 2.988281 c 0 0.558594 0.453125 1.011719 1.011719 1.011719 c 0.550781 -0.007812 0.996093 -0.460938 0.988281 -1.011719 v -2.988281 z m 0 0"/><path d="m 9 10 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 s 1 0.449219 1 1 z m 0 0" fill="#222222"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -600 -303)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -600 -303)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -600 -303)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>
|
After Width: | Height: | Size: 2.5 KiB |
39
data/resources/mapstyle/osm-liberty/LICENSE.md
Normal file
@ -0,0 +1,39 @@
|
||||
## Code License
|
||||
|
||||
The Mapbox GL Style JSON file is originally derived from [OSM Bright from Mapbox Open Styles](https://github.com/mapbox/mapbox-gl-styles/blob/master/LICENSE.md). The modified Mapbox GL Style JSON retains the same BSD license.
|
||||
|
||||
> Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
> * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of Mapbox nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
## Design License
|
||||
|
||||
The look and feel of the OSM liberty map design is also derived (although heavily altered) from [OSM Bright from Mapbox Open Styles](https://github.com/mapbox/mapbox-gl-styles/blob/master/LICENSE.md) which is licensed under the Creative Commons Attribution 3.0 license.
|
||||
|
||||
The map is displaying and styling the data from [OpenMapTiles](https://openmaptiles.org/) with [CC-BY 4.0 design license](https://github.com/openmaptiles/openmaptiles/blob/master/LICENSE.md).
|
||||
|
||||
The products or services using this map style need to visibly credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to http://openmaptiles.org/. For a browsable electronic map based on OpenMapTiles and OpenStreetMap data, the credit should appear in the corner of the map. For example:
|
||||
|
||||
[© OpenMapTiles](https://openmaptiles.org/)
|
||||
[© OpenStreetMap contributors](https://www.openstreetmap.org/copyright)
|
||||
|
||||
For printed and static maps a similar attribution should be made in a textual description near the image, in the same fashion as if you cite a photograph.
|
||||
|
||||
## Icons
|
||||
|
||||
OSM Liberty is using the [Maki POI icon set](https://github.com/mapbox/maki/blob/master/LICENSE.txt) which is licensed under CC0 1.0 Universal.
|
||||
|
||||
The right arrow was derived from [Wikipedia][wiki_arrow] which is in the public domain.
|
||||
|
||||
[wiki_arrow]: https://commons.wikimedia.org/wiki/File:Arrowright.svg
|
||||
|
||||
## Fonts
|
||||
|
||||
OSM Liberty is using the Roboto font family (Copyright 2011 Google).
|
||||
Roboto is licensed under the [Apache License, Version 2.0](https://github.com/google/roboto/blob/master/LICENSE).
|
||||
|
14
data/resources/mapstyle/osm-liberty/README.md
Normal file
@ -0,0 +1,14 @@
|
||||
# OSM Liberty style
|
||||
|
||||
This is the vector style currently used in Maps. It is taken from
|
||||
<https://github.com/maputnik/osm-liberty> at commit [539d0525](https://github.com/maputnik/osm-liberty/commit/539d0525421eb5be901ede630c49947dfe5a343f),
|
||||
with a few modifications:
|
||||
|
||||
- Removed the Natural Earth raster layer, since libshumate doesn't support that
|
||||
yet
|
||||
- Removed the 3D buildings layer, since libshumate doesn't support fill-extrusion
|
||||
layers yet
|
||||
- Changed the tile source URL
|
||||
|
||||
OSM Liberty is covered by several licenses. See LICENSE.md, which is copied
|
||||
from the upstream repository.
|
1689
data/resources/mapstyle/osm-liberty/sprites.json
Normal file
BIN
data/resources/mapstyle/osm-liberty/sprites.png
Normal file
After Width: | Height: | Size: 44 KiB |
1689
data/resources/mapstyle/osm-liberty/sprites@2x.json
Normal file
BIN
data/resources/mapstyle/osm-liberty/sprites@2x.png
Normal file
After Width: | Height: | Size: 106 KiB |
1660
data/resources/mapstyle/osm-liberty/style.json
Normal file
@ -1,3 +1,48 @@
|
||||
# Stylesheets
|
||||
# We accept grass (a Rust SASS compiler) or sass (the official dart SASS compiler).
|
||||
sass_bin = find_program('grass', required: false)
|
||||
sass_options = []
|
||||
if not sass_bin.found()
|
||||
# Require SASS as we need at least one compiler.
|
||||
sass_bin = find_program('sass')
|
||||
|
||||
if sass_bin.found()
|
||||
# these options are not supported by grass.
|
||||
sass_options += ['--no-error-css', '--no-source-map']
|
||||
endif
|
||||
endif
|
||||
|
||||
scss_files = [
|
||||
'style',
|
||||
'style-hc',
|
||||
]
|
||||
|
||||
# Keep ordered alphabetically.
|
||||
scss_deps = files([
|
||||
'stylesheet/_common.scss',
|
||||
'stylesheet/_components.scss',
|
||||
'stylesheet/_config.scss',
|
||||
'stylesheet/_login.scss',
|
||||
'stylesheet/_room_details.scss',
|
||||
'stylesheet/_room_history.scss',
|
||||
'stylesheet/_session_view.scss',
|
||||
'stylesheet/_vendor.scss',
|
||||
])
|
||||
|
||||
stylesheet_deps = []
|
||||
|
||||
foreach scss: scss_files
|
||||
stylesheet_deps += custom_target('@0@.scss'.format(scss),
|
||||
input: '@0@.scss'.format(scss),
|
||||
output: '@0@.css'.format(scss),
|
||||
command: [
|
||||
sass_bin, sass_options, '@INPUT@', '@OUTPUT@',
|
||||
],
|
||||
depend_files: scss_deps,
|
||||
)
|
||||
endforeach
|
||||
|
||||
|
||||
# Resources
|
||||
resources = gnome.compile_resources(
|
||||
'resources',
|
||||
@ -5,4 +50,5 @@ resources = gnome.compile_resources(
|
||||
gresource_bundle: true,
|
||||
install: true,
|
||||
install_dir: pkgdatadir,
|
||||
dependencies: stylesheet_deps,
|
||||
)
|
||||
|
@ -13,10 +13,12 @@
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/edit-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/emoji-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/expander-arrow-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/external-link-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/fullscreen-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/go-bottom-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/go-next-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/go-previous-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/hide-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/idp-apple-dark.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/idp-apple.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/idp-facebook.svg</file>
|
||||
@ -41,25 +43,41 @@
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/settings-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/system-search-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/actions/user-add-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/apps/org.gnome.Fractal.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/audio-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/blocked-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/checkmark-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/devices-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/document-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/done-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/dot-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/empty-page-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/encryption-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/error-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/explore-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/home-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/image-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/info-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/key-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/no-camera-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/notifications-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/security-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/person-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/safety-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/sync-off-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/sync-on-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/sync-partial-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/user-info-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/users-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/verified-danger-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/verified-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/verified-warning-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/video-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">icons/scalable/status/warning-symbolic.svg</file>
|
||||
<file preprocess="json-stripblanks">mapstyle/osm-liberty/sprites.json</file>
|
||||
<file>mapstyle/osm-liberty/sprites.png</file>
|
||||
<file preprocess="json-stripblanks">mapstyle/osm-liberty/sprites@2x.json</file>
|
||||
<file>mapstyle/osm-liberty/sprites@2x.png</file>
|
||||
<file>mapstyle/osm-liberty/style.json</file>
|
||||
<file compressed="true">sas-emoji/ar.json</file>
|
||||
<file compressed="true">sas-emoji/bg.json</file>
|
||||
<file compressed="true">sas-emoji/ca.json</file>
|
||||
@ -88,6 +106,7 @@
|
||||
<file compressed="true">sas-emoji/uk.json</file>
|
||||
<file compressed="true">sas-emoji/vi.json</file>
|
||||
<file compressed="true">sas-emoji/zh_Hans.json</file>
|
||||
<file compressed="true">style-hc.css</file>
|
||||
<file compressed="true">style.css</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
|
11
data/resources/style-hc.scss
Normal file
@ -0,0 +1,11 @@
|
||||
// High contrast variant.
|
||||
|
||||
// Initialize contrast variable.
|
||||
@use 'stylesheet/config' with (
|
||||
$contrast: 'high',
|
||||
);
|
||||
|
||||
@use 'stylesheet/common';
|
||||
@use 'stylesheet/components';
|
||||
@use 'stylesheet/login';
|
||||
@use 'stylesheet/session_view';
|
@ -1,816 +0,0 @@
|
||||
/* Global */
|
||||
|
||||
textview, text {
|
||||
color: inherit;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
button.pill.large {
|
||||
padding: 12px 40px;
|
||||
}
|
||||
|
||||
.emoji {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
listview.content {
|
||||
border-radius: 9px;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
listview.content row:last-child {
|
||||
border-bottom-width: 0px;
|
||||
}
|
||||
|
||||
headerbar .suggested-action, .standalone-button {
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
button.opaque.success {
|
||||
color: @success_fg_color;
|
||||
background-color: @success_bg_color;
|
||||
}
|
||||
|
||||
.extra-large-icon {
|
||||
-gtk-icon-size: 128px;
|
||||
}
|
||||
|
||||
.extra-large-icon.error {
|
||||
color: @error_bg_color;
|
||||
}
|
||||
|
||||
button.row {
|
||||
min-height: 34px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.round-corners {
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.form-page scrolledwindow > viewport > clamp > box {
|
||||
margin: 42px 12px;
|
||||
border-spacing: 24px;
|
||||
}
|
||||
|
||||
.form-page .card {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.form-page levelbar.discrete block {
|
||||
min-height: 5px;
|
||||
}
|
||||
|
||||
box.paragraphs {
|
||||
border-spacing: 12px;
|
||||
}
|
||||
|
||||
levelbar.discrete.accent block.filled {
|
||||
background-color: @accent_color;
|
||||
}
|
||||
|
||||
levelbar.discrete.success block.filled {
|
||||
background-color: @success_color;
|
||||
}
|
||||
|
||||
levelbar.discrete.warning block.filled {
|
||||
background-color: @warning_color;
|
||||
}
|
||||
|
||||
levelbar.discrete.error block.filled {
|
||||
background-color: @error_color;
|
||||
}
|
||||
|
||||
.content .label-button {
|
||||
min-width: 86px;
|
||||
}
|
||||
|
||||
|
||||
/* Components */
|
||||
|
||||
.inline-pill {
|
||||
border-radius: 9999px;
|
||||
background-color: alpha(@view_fg_color, 0.1);
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
.app-notification {
|
||||
border-radius: 9999px;
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
.app-notification .inline-pill {
|
||||
background-color: alpha(@window_bg_color, 0.2);
|
||||
}
|
||||
|
||||
.selected-avatar avatar {
|
||||
border: 2px solid @accent_bg_color;
|
||||
}
|
||||
|
||||
.blue-checkmark {
|
||||
color: @light_1;
|
||||
border-radius: 9999px;
|
||||
border: solid @accent_bg_color 2px;
|
||||
background-color: @accent_bg_color;
|
||||
}
|
||||
|
||||
power-level-badge {
|
||||
color: @dark_5;
|
||||
background-color: @light_3;
|
||||
border-radius: 0.4em;
|
||||
padding: 0.1em 0.5em;
|
||||
font-size: 0.8em;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
power-level-badge.admin {
|
||||
color: @error_fg_color;
|
||||
background-color: @error_bg_color;
|
||||
}
|
||||
|
||||
power-level-badge.mod {
|
||||
color: @warning_fg_color;
|
||||
background-color: @warning_bg_color;
|
||||
}
|
||||
|
||||
media-viewer headerbar {
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
media-content-viewer controls {
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
location-viewer .map-marker {
|
||||
color: @accent_color;
|
||||
}
|
||||
|
||||
entry .inline-pill {
|
||||
margin-bottom: -0.5em;
|
||||
}
|
||||
|
||||
editable-avatar .cutout {
|
||||
background-color: @window_bg_color;
|
||||
border-radius: 9999px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
|
||||
/* Login */
|
||||
|
||||
login {
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
.qrcode {
|
||||
background-color: white;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.sso-button {
|
||||
padding: 4px;
|
||||
-gtk-icon-size: 26px;
|
||||
min-height: 34px;
|
||||
}
|
||||
|
||||
/* Session */
|
||||
|
||||
.session-loading-spinner {
|
||||
min-width: 32px;
|
||||
min-height: 32px;
|
||||
}
|
||||
|
||||
|
||||
/* Verification */
|
||||
|
||||
session-verification clamp {
|
||||
margin: 12px;
|
||||
}
|
||||
|
||||
session-verification .text-button {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
|
||||
/* Account switcher */
|
||||
|
||||
.account-switcher list {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.account-switcher .account-switcher-row {
|
||||
border-radius: 10px;
|
||||
margin: 3px 0px;
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
.account-switcher .account-switcher-row:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.account-switcher button.account-switcher-row {
|
||||
font-weight: normal;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#new-login-icon {
|
||||
padding: 12px; /* 2 * padding + pixel-size = size (of avatar) */
|
||||
background-color: alpha(currentColor, .1);
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
|
||||
/* Sidebar */
|
||||
|
||||
.sidebar-list row {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.sidebar-list row:focus-within {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.sidebar-list row:hover,
|
||||
.sidebar-list row:selected {
|
||||
background: none;
|
||||
}
|
||||
|
||||
sidebar-row > * {
|
||||
margin: 0 6px;
|
||||
padding: 9px;
|
||||
border-radius: 6px;
|
||||
transition-property: outline, outline-width, outline-offset, outline-color;
|
||||
transition-duration: 300ms;
|
||||
animation-timing-function: ease-in-out;
|
||||
outline: 0 solid transparent;
|
||||
outline-offset: 2px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
sidebar-row:focus > * {
|
||||
outline-color: alpha(@accent_color, 0.5);
|
||||
outline-width: 2px;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
sidebar-row:not(.drop-mode) > *:hover {
|
||||
background-color: alpha(currentColor, 0.07);
|
||||
}
|
||||
|
||||
.sidebar-list row:active sidebar-row > * {
|
||||
background-color: alpha(currentColor, 0.16);
|
||||
}
|
||||
|
||||
.sidebar-list row:selected sidebar-row > * {
|
||||
background-color: alpha(currentColor, 0.1);
|
||||
}
|
||||
|
||||
.sidebar-list row:selected sidebar-row:not(.drop-mode) > *:hover {
|
||||
background-color: alpha(currentColor, 0.13);
|
||||
}
|
||||
|
||||
.sidebar-list row:selected:active sidebar-row > * {
|
||||
background-color: alpha(currentColor, 0.19);
|
||||
}
|
||||
|
||||
sidebar-row icon-item {
|
||||
background: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
sidebar-row icon-item image {
|
||||
min-width: 24px; /* Same width as avatars, so the text is aligned */
|
||||
}
|
||||
|
||||
sidebar-row category {
|
||||
margin-top: 6px;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
sidebar-row category image.arrow {
|
||||
transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||
}
|
||||
|
||||
sidebar-row category:not(:checked) image.arrow:dir(ltr) {
|
||||
transform: rotate(-0.5turn);
|
||||
}
|
||||
|
||||
sidebar-row category:not(:checked) image.arrow:dir(rtl) {
|
||||
transform: rotate(0.5turn);
|
||||
}
|
||||
|
||||
sidebar-row room .notification_count {
|
||||
font-weight: bold;
|
||||
font-size: 0.8em;
|
||||
border-radius: 10px;
|
||||
min-width: 0.7em;
|
||||
padding: 2px 5px;
|
||||
color: currentColor;
|
||||
background-color: alpha(currentColor, 0.15);
|
||||
}
|
||||
|
||||
sidebar-row room .highlight {
|
||||
color: @accent_fg_color;
|
||||
background-color: @accent_bg_color;
|
||||
}
|
||||
|
||||
sidebar-row.drag > * {
|
||||
color: @accent_fg_color;
|
||||
background-color: @accent_bg_color;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
sidebar-row.drop-disabled > * {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
sidebar-row.drop-empty > * {
|
||||
color: @accent_color;
|
||||
}
|
||||
|
||||
sidebar-row icon-item.forget {
|
||||
color: @error_color;
|
||||
background: none;
|
||||
}
|
||||
|
||||
sidebar-row.drop-active {
|
||||
background-color: alpha(@accent_color, 0.1);
|
||||
}
|
||||
|
||||
sidebar-row.drop-active category {
|
||||
color: @accent_color;
|
||||
}
|
||||
|
||||
sidebar-row.drop-active .dim-label,
|
||||
sidebar-row.drop-active.drop-empty .dim-label {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
|
||||
/* Room History */
|
||||
|
||||
.room-history listview {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.room-history row {
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
room-history-row {
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
border-radius: 6px;
|
||||
transition-property: outline, outline-width, outline-offset, outline-color;
|
||||
transition-duration: 300ms;
|
||||
animation-timing-function: ease-in-out;
|
||||
outline: 0 solid transparent;
|
||||
outline-offset: 2px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
room-history-row.has-header {
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
room-history-row:not(.has-header) .event-content:dir(ltr),
|
||||
room-history-row:not(.has-header) message-reactions:dir(ltr) {
|
||||
margin-left: 46px;
|
||||
}
|
||||
|
||||
room-history-row:not(.has-header) .event-content:dir(rtl),
|
||||
room-history-row:not(.has-header) message-reactions:dir(rtl) {
|
||||
margin-right: 46px;
|
||||
}
|
||||
|
||||
room-history-row:focus {
|
||||
outline-color: alpha(@accent_color, 0.5);
|
||||
outline-width: 2px;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
room-history-row.has-open-popup {
|
||||
background-color: alpha(currentColor, 0.07);
|
||||
}
|
||||
|
||||
room-history-row.selected {
|
||||
background-color: alpha(currentColor, 0.1);
|
||||
}
|
||||
|
||||
room-history-row.selected.has-open-popup {
|
||||
background-color: alpha(currentColor, 0.13);
|
||||
}
|
||||
|
||||
room-history-row.highlight {
|
||||
background-color: alpha(@accent_bg_color, .2);
|
||||
}
|
||||
|
||||
room-history-row.highlight.has-open-popup {
|
||||
background-color: alpha(@accent_bg_color, .25);
|
||||
}
|
||||
|
||||
room-history-row.highlight.selected {
|
||||
background-color: alpha(@accent_bg_color, .3);
|
||||
}
|
||||
|
||||
room-history-row.highlight.selected.has-open-popup {
|
||||
background-color: alpha(@accent_bg_color, .33);
|
||||
}
|
||||
|
||||
room-history-row .event-content .emoji {
|
||||
font-size: 3em;
|
||||
}
|
||||
|
||||
room-history-row .event-content .emote {
|
||||
color: @accent_color;
|
||||
}
|
||||
|
||||
.content-thumbnail {
|
||||
border-radius: 6px;
|
||||
background-color: @borders;
|
||||
}
|
||||
|
||||
.content-thumbnail .osd.circular {
|
||||
min-width: 64px;
|
||||
min-height: 64px;
|
||||
border-radius: 32px;
|
||||
}
|
||||
|
||||
.content-thumbnail .timestamp {
|
||||
border-radius: 4px;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
room-history-row .event-content .quote,
|
||||
.related-event-content {
|
||||
border-left: 2px solid @accent_bg_color;
|
||||
padding-left: 6px;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
message-reactions .toggle {
|
||||
padding: 1px 4px 0 5px;
|
||||
}
|
||||
|
||||
message-reactions .reaction-key {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
message-reactions .reaction-key.emoji{
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
message-reactions .reaction-count {
|
||||
font-size: 0.8em;
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.reaction-chooser {
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.reaction-chooser button {
|
||||
font-size: 1.3em;
|
||||
-gtk-icon-size: 1.3em;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
read-receipts-list {
|
||||
min-height: 24px;
|
||||
min-width: 16px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
read-receipts-list:hover {
|
||||
background-color: alpha(currentColor, .07);
|
||||
}
|
||||
|
||||
read-receipts-list:active {
|
||||
background-color: alpha(currentColor, .16);
|
||||
}
|
||||
|
||||
read-receipts-list:checked {
|
||||
background-color: alpha(currentColor, .1);
|
||||
}
|
||||
|
||||
read-receipts-list .cutout {
|
||||
background-color: @view_bg_color;
|
||||
border-radius: 999px;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.divider-row {
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
min-width: 36px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.codeview {
|
||||
border-radius: 5px;
|
||||
padding: 6px;
|
||||
font-family: monospace;
|
||||
background-color: @text_view_bg;
|
||||
color: @view_fg_color;
|
||||
}
|
||||
|
||||
.list-popover contents {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.list-popover viewport, .list-popover listview {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.list-popover list, .list-popover listview {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.list-popover .list-popover-row {
|
||||
border-radius: 6px;
|
||||
margin: 3px 0px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.list-popover .list-popover-row:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.list-popover .list-popover-row:last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.related-event-toolbar {
|
||||
padding: 0 6px 0 12px;
|
||||
}
|
||||
|
||||
.related-event-toolbar button {
|
||||
margin: 12px 6px;
|
||||
min-height: 24px;
|
||||
min-width: 24px;
|
||||
}
|
||||
|
||||
.related-event-content {
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
typing-row {
|
||||
padding: 0 6px;
|
||||
min-height: 30px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
typing-row .cutout {
|
||||
background-color: @view_bg_color;
|
||||
border-radius: 999px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
room-history-row .h1, .related-event-content .h1 {
|
||||
font-weight: 800;
|
||||
font-size: 15pt;
|
||||
}
|
||||
|
||||
room-history-row .h2, .related-event-content .h2 {
|
||||
font-weight: 800;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
room-history-row .h3, .related-event-content .h3 {
|
||||
font-weight: 700;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
room-history-row .h4, .related-event-content .h4 {
|
||||
font-weight: 700;
|
||||
font-size: 13pt;
|
||||
}
|
||||
|
||||
room-history-row .h5, .related-event-content .h5 {
|
||||
font-weight: 700;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
room-history-row .h6, .related-event-content .h6 {
|
||||
font-weight: 700;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
roomtitle {
|
||||
margin-top: -6px;
|
||||
margin-bottom: -6px;
|
||||
min-height: 12px;
|
||||
}
|
||||
|
||||
roomtitle .title {
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
roomtitle .subtitle {
|
||||
font-size: smaller;
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
|
||||
/* Event Source Dialog */
|
||||
|
||||
.event-details-dialog .sourceview {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.event-details-dialog .sourceview-expander-row row {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Explore */
|
||||
|
||||
.explore .padded-button {
|
||||
min-width: 64px;
|
||||
}
|
||||
|
||||
.explore-servers-popover list {
|
||||
background-color: transparent;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.explore-servers-popover list row {
|
||||
min-height: 36px;
|
||||
padding: 0 8px;
|
||||
border-radius: 6px;
|
||||
margin: 0 0 2px;
|
||||
}
|
||||
|
||||
.explore-servers-popover list row button {
|
||||
min-height: 24px;
|
||||
min-width: 24px;
|
||||
}
|
||||
|
||||
|
||||
/* Invite */
|
||||
|
||||
.invite-room-name {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
.invite-search-results {
|
||||
padding: 12px 0px;
|
||||
}
|
||||
|
||||
.invite-search-results > row {
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
/* Media History Viewer */
|
||||
|
||||
media-history-viewer {
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
media-history-viewer headerbar {
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
media-history-viewer gridview {
|
||||
background: none;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
media-history-viewer gridview > child {
|
||||
background: none;
|
||||
padding: 2px;
|
||||
/* ease-out-quad */
|
||||
transition: 100ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||
}
|
||||
|
||||
media-history-viewer gridview > child:hover {
|
||||
transform: scale(1.03);
|
||||
}
|
||||
|
||||
media-history-viewer gridview > child:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
media-history-vieweritem > overlay > image {
|
||||
border-radius: 100%;
|
||||
padding: 12px;
|
||||
-gtk-icon-size: 24px;
|
||||
}
|
||||
|
||||
|
||||
/* File History Viewer */
|
||||
|
||||
file-history-viewer listview > row {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Audio History Viewer */
|
||||
|
||||
audio-history-viewer listview > row {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Room Details */
|
||||
|
||||
.room-details listview {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.room-details-group entry:disabled {
|
||||
border-color: transparent;
|
||||
/* Undo non-sensitive style. */
|
||||
color: @view_fg_color;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.room-details-group entry textview {
|
||||
/* Undo non-sensitive style. */
|
||||
color: @view_fg_color;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.room-details-group entry text {
|
||||
/* Undo non-sensitive style. */
|
||||
color: @view_fg_color;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.room-details-name:disabled {
|
||||
font-size: 20pt;
|
||||
font-weight: 800;
|
||||
margin-top: 24px;
|
||||
filter: opacity(1);
|
||||
}
|
||||
|
||||
.room-details-topic:not(:disabled) {
|
||||
min-height: 102px;
|
||||
}
|
||||
|
||||
.room-details-topic:disabled {
|
||||
filter: opacity(1);
|
||||
}
|
||||
|
||||
members-list row {
|
||||
margin-bottom: 6px;
|
||||
padding: 8px 12px;
|
||||
min-height: 32px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
members-list row .icon:dir(ltr) {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
members-list row .icon:dir(rtl) {
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
dragoverlay statuspage {
|
||||
background-color: alpha(@accent_bg_color, 0.5);
|
||||
color: @accent_fg_color;
|
||||
}
|
||||
|
||||
|
||||
/* Account Settings */
|
||||
|
||||
.account-settings listview {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
|
||||
/* Account Chooser Dialog */
|
||||
|
||||
.account-chooser list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.account-chooser list row {
|
||||
margin-bottom: 6px;
|
||||
padding: 8px 12px;
|
||||
min-height: 32px;
|
||||
border-radius: 12px;
|
||||
}
|
5
data/resources/style.scss
Normal file
@ -0,0 +1,5 @@
|
||||
@use 'stylesheet/common';
|
||||
|
||||
@use 'stylesheet/components';
|
||||
@use 'stylesheet/login';
|
||||
@use 'stylesheet/session_view';
|
121
data/resources/stylesheet/_common.scss
Normal file
@ -0,0 +1,121 @@
|
||||
// Global selectors.
|
||||
|
||||
@use 'vendor';
|
||||
|
||||
:root {
|
||||
--focus-outline-color: color-mix(in srgb, var(--accent-color) 50%, transparent);
|
||||
}
|
||||
|
||||
textview, text {
|
||||
color: inherit;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
button.pill.large {
|
||||
padding: 12px 40px;
|
||||
}
|
||||
|
||||
.emoji {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
headerbar .suggested-action, .standalone-button {
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
.extra-large-icon {
|
||||
-gtk-icon-size: 128px;
|
||||
}
|
||||
|
||||
.form-page {
|
||||
scrolledwindow > viewport > clamp > box {
|
||||
margin: 42px 12px;
|
||||
border-spacing: 24px;
|
||||
}
|
||||
|
||||
levelbar.discrete block {
|
||||
min-height: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
box.paragraphs {
|
||||
// Set the spacing between paragraphs.
|
||||
border-spacing: 12px;
|
||||
}
|
||||
|
||||
.content .label-button {
|
||||
min-width: 86px;
|
||||
}
|
||||
|
||||
button.overlaid {
|
||||
// Make sure the outline is fully visible.
|
||||
margin: 3px;
|
||||
}
|
||||
|
||||
.avatar-row-list, .string-row-list {
|
||||
contents {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
viewport, listview {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
list, listview {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
row {
|
||||
border-radius: vendor.$menu_radius;
|
||||
margin: 3px 0px;
|
||||
padding: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.avatar-row-list {
|
||||
row {
|
||||
&:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.string-row-list row {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.entry-row-error-revealer {
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.card-icon {
|
||||
padding: 12px;
|
||||
border-radius: 100%;
|
||||
-gtk-icon-size: 20px;
|
||||
background-color: color-mix(in srgb, var(--accent-bg-color) 30%, transparent);
|
||||
}
|
||||
|
||||
.card.command {
|
||||
border-radius: vendor.$menu_radius;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
scrolledwindow.card {
|
||||
@include vendor.focus-ring($offset: -1px, $focus-state: ':focus-within');
|
||||
|
||||
> textview {
|
||||
padding: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.padded-top-bar {
|
||||
padding: 0 12px;
|
||||
}
|
168
data/resources/stylesheet/_components.scss
Normal file
@ -0,0 +1,168 @@
|
||||
// Components.
|
||||
|
||||
@use "sass:math";
|
||||
@use 'vendor';
|
||||
|
||||
inline-pill {
|
||||
border-radius: 9999px;
|
||||
background-color: vendor.$button_color;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
|
||||
&.activatable {
|
||||
&:hover {
|
||||
background-color: vendor.$button_hover_color;
|
||||
|
||||
image {
|
||||
filter: brightness(1.07) ;
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: vendor.$button_active_color;
|
||||
|
||||
image {
|
||||
filter: brightness(1.16) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.selected-avatar avatar {
|
||||
border: 2px solid var(--accent-bg-color);
|
||||
}
|
||||
|
||||
.blue-checkmark {
|
||||
color: var(--accent-fg-color);
|
||||
border-radius: 9999px;
|
||||
border: solid var(--accent-bg-color) 2px;
|
||||
background-color: var(--accent-bg-color);
|
||||
}
|
||||
|
||||
role-badge {
|
||||
color: var(--dark-5);
|
||||
background-color: var(--light-3);
|
||||
border-radius: 0.4em;
|
||||
padding: 0.1em 0.5em;
|
||||
font-size: 0.8em;
|
||||
|
||||
&.creator {
|
||||
color: var(--accent-fg-color);
|
||||
background-color: var(--accent-purple);
|
||||
}
|
||||
|
||||
&.admin {
|
||||
color: var(--accent-fg-color);
|
||||
background-color: var(--accent-red);
|
||||
}
|
||||
|
||||
&.mod {
|
||||
color: var(--accent-fg-color);
|
||||
background-color: var(--accent-yellow);
|
||||
}
|
||||
|
||||
&.muted {
|
||||
color: var(--light-1);
|
||||
background-color: var(--dark-2);
|
||||
}
|
||||
}
|
||||
|
||||
media-viewer toolbarview headerbar {
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
media-content-viewer controls {
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
location-viewer .map-marker {
|
||||
color: var(--accent-color);
|
||||
}
|
||||
|
||||
entry inline-pill {
|
||||
margin-bottom: -0.5em;
|
||||
}
|
||||
|
||||
editable-avatar {
|
||||
.cutout {
|
||||
background-color: var(--window-bg-color);
|
||||
border-radius: 9999px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.osd.circular {
|
||||
$size: 64px;
|
||||
min-width: $size;
|
||||
min-height: $size;
|
||||
border-radius: math.div($size, 2);
|
||||
}
|
||||
}
|
||||
|
||||
.substring-entry-row .header {
|
||||
.subtitle {
|
||||
margin-top: 4px;
|
||||
margin-bottom: -4px;
|
||||
}
|
||||
|
||||
text placeholder {
|
||||
opacity: var(--dim-opacity);
|
||||
}
|
||||
}
|
||||
|
||||
.role-selection-popover {
|
||||
viewport > box {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
list row {
|
||||
margin: 0;
|
||||
padding: 2px 6px;
|
||||
border-radius: vendor.$menu_radius;
|
||||
|
||||
&.spin {
|
||||
padding: 0;
|
||||
|
||||
> box {
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
spinbutton > button {
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
button.spin-confirm {
|
||||
min-height: 22px;
|
||||
min-width: 22px;
|
||||
padding: 0;
|
||||
margin-left: 2px;
|
||||
|
||||
&:dir(rtl) {
|
||||
margin-left: 0;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
image {
|
||||
padding: 7px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
row.button loading-bin label.title {
|
||||
margin-left: 12px;
|
||||
margin-right: 12px;
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
crop-circle > .mask {
|
||||
background: black;
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
user-page scrolledwindow > viewport > clamp > box {
|
||||
margin: 12px;
|
||||
border-spacing: 24px;
|
||||
}
|
3
data/resources/stylesheet/_config.scss
Normal file
@ -0,0 +1,3 @@
|
||||
// Configuration file with global variable.
|
||||
|
||||
$contrast: 'default' !default;
|
26
data/resources/stylesheet/_login.scss
Normal file
@ -0,0 +1,26 @@
|
||||
// Login and setup.
|
||||
|
||||
login {
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
qrcode {
|
||||
background-color: white;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.sso-button {
|
||||
padding: 4px;
|
||||
-gtk-icon-size: 26px;
|
||||
min-height: 34px;
|
||||
}
|
||||
|
||||
setup-view {
|
||||
clamp {
|
||||
margin: 12px;
|
||||
}
|
||||
|
||||
.text-button {
|
||||
min-width: 200px;
|
||||
}
|
||||
}
|
117
data/resources/stylesheet/_room_details.scss
Normal file
@ -0,0 +1,117 @@
|
||||
// Room details.
|
||||
|
||||
@use 'vendor';
|
||||
|
||||
visual-media-history-viewer {
|
||||
background: black;
|
||||
color: white;
|
||||
|
||||
headerbar {
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
gridview {
|
||||
background: none;
|
||||
padding: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
visual-media-history-viewer-item {
|
||||
background-color: var(--border-color);
|
||||
transition: vendor.$ease-out-quad;
|
||||
|
||||
&:hover, &:focus {
|
||||
transform: scale(1.03);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
> overlay > image {
|
||||
border-radius: 100%;
|
||||
padding: 12px;
|
||||
-gtk-icon-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
file-history-viewer, audio-history-viewer {
|
||||
listview > row {
|
||||
border-radius: 0;
|
||||
padding: 6px;
|
||||
|
||||
&:last-child {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.room-details listview {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
members-list {
|
||||
listview > row, members-list list > row {
|
||||
padding: 8px 12px;
|
||||
min-height: 32px;
|
||||
}
|
||||
|
||||
listview > row {
|
||||
margin-bottom: 6px;
|
||||
border-radius: vendor.$card_radius;
|
||||
}
|
||||
|
||||
row .icon {
|
||||
&:dir(ltr) {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
&:dir(rtl) {
|
||||
margin-left: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dragoverlay statuspage {
|
||||
background-color: color-mix(in srgb, var(--accent-bg-color) var(--dim-opacity), transparent);
|
||||
color: var(--accent-fg-color);
|
||||
}
|
||||
|
||||
.public-address-tag {
|
||||
color: var(--accent-fg-color);
|
||||
background-color: var(--accent-bg-color);
|
||||
border-radius: 0.4em;
|
||||
padding: 0.3em 0.5em;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
.permissions-member-list > row {
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
permissions-member-row {
|
||||
padding: 8px;
|
||||
border-radius: vendor.$card_radius;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
|
||||
&:hover, &.has-open-popup {
|
||||
background-color: vendor.$hover_color;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: vendor.$active_color;
|
||||
}
|
||||
}
|
||||
|
||||
.user-search-results {
|
||||
padding: 12px 0px;
|
||||
|
||||
> row {
|
||||
border-radius: vendor.$menu_radius;
|
||||
}
|
||||
}
|
487
data/resources/stylesheet/_room_history.scss
Normal file
@ -0,0 +1,487 @@
|
||||
// Room history.
|
||||
|
||||
@use 'config';
|
||||
@use 'vendor';
|
||||
|
||||
%nested-effect {
|
||||
border-left: 2px solid var(--accent-bg-color);
|
||||
padding-left: 6px;
|
||||
opacity: if(config.$contrast == 'high', 90%, 70%);
|
||||
}
|
||||
|
||||
room-title {
|
||||
margin-top: -6px;
|
||||
margin-bottom: -6px;
|
||||
min-height: 12px;
|
||||
padding: 3px 0;
|
||||
|
||||
.title {
|
||||
padding: 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
padding: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
&.with-subtitle {
|
||||
button {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.title, .subtitle {
|
||||
margin-top: -0.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.room-history .room-history-list {
|
||||
padding-bottom: 0;
|
||||
|
||||
> row {
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.room-history-row {
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
border-radius: vendor.$menu_radius;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
|
||||
&.has-avatar {
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
&:not(.has-avatar) {
|
||||
.event-content {
|
||||
&:dir(ltr) {
|
||||
margin-left: 54px;
|
||||
}
|
||||
|
||||
&:dir(rtl) {
|
||||
margin-right: 54px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.has-open-popup {
|
||||
background-color: vendor.$hover_color;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
background-color: vendor.$selected_color;
|
||||
|
||||
&.has-open-popup {
|
||||
background-color: vendor.$selected_hover_color;
|
||||
}
|
||||
}
|
||||
|
||||
&.highlight {
|
||||
background-color: color-mix(in srgb, var(--accent-bg-color) 20%, transparent);
|
||||
|
||||
&.has-open-popup {
|
||||
background-color: color-mix(in srgb, var(--accent-bg-color) 25%, transparent);
|
||||
}
|
||||
|
||||
&.selected {
|
||||
background-color: color-mix(in srgb, var(--accent-bg-color) 30%, transparent);
|
||||
|
||||
&.has-open-popup {
|
||||
background-color: color-mix(in srgb, var(--accent-bg-color) 33%, transparent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sender-avatar {
|
||||
padding: 5px;
|
||||
border-radius: 100%;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
|
||||
&:hover {
|
||||
background-color: vendor.$hover_color;
|
||||
|
||||
image {
|
||||
filter: brightness(1.07) ;
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: vendor.$active_color;
|
||||
|
||||
image {
|
||||
filter: brightness(1.16) ;
|
||||
}
|
||||
}
|
||||
|
||||
&:checked {
|
||||
background-color: vendor.$selected_color;
|
||||
|
||||
image {
|
||||
filter: brightness(1.1) ;
|
||||
}
|
||||
}
|
||||
|
||||
popover button.text-button {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
|
||||
message-sender {
|
||||
@include vendor.focus-ring($offset: -1px, $focus-state: ':focus-within');
|
||||
|
||||
border-radius: 3px;
|
||||
|
||||
&.activatable {
|
||||
&:hover, &:focus {
|
||||
label {
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.event-content {
|
||||
.h1 {
|
||||
font-weight: 800;
|
||||
font-size: 15pt;
|
||||
}
|
||||
|
||||
.h2 {
|
||||
font-weight: 800;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
.h3 {
|
||||
font-weight: 700;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
.h4 {
|
||||
font-weight: 700;
|
||||
font-size: 13pt;
|
||||
}
|
||||
|
||||
.h5 {
|
||||
font-weight: 700;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
.h6 {
|
||||
font-weight: 700;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
.emoji-message {
|
||||
font-size: 3em;
|
||||
}
|
||||
|
||||
.emote {
|
||||
color: var(--accent-color);
|
||||
}
|
||||
|
||||
.quote {
|
||||
@extend %nested-effect;
|
||||
}
|
||||
|
||||
expander-widget > box > {
|
||||
title {
|
||||
border-spacing: 6px;
|
||||
}
|
||||
|
||||
:not(title) {
|
||||
padding: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.codeview {
|
||||
border-radius: vendor.$menu_radius;
|
||||
padding: 6px;
|
||||
font-family: monospace;
|
||||
background-color: var(--text-view-bg);
|
||||
color: var(--view-fg-color);
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
min-width: 36px;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
state-group-row.room-history-row {
|
||||
&:not(.has-avatar) {
|
||||
.event-content {
|
||||
&:dir(ltr) {
|
||||
margin-left: 42px;
|
||||
}
|
||||
|
||||
&:dir(rtl) {
|
||||
margin-right: 42px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.expander-title {
|
||||
padding: 6px 12px;
|
||||
border-radius: vendor.$menu_radius;
|
||||
|
||||
&:hover {
|
||||
background-color: vendor.$button_hover_color;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: vendor.$button_active_color;
|
||||
}
|
||||
}
|
||||
|
||||
image.arrow {
|
||||
transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||
}
|
||||
|
||||
&:not(:checked) image.arrow {
|
||||
&:dir(ltr) {
|
||||
transform: rotate(-0.5turn);
|
||||
}
|
||||
|
||||
&:dir(rtl) {
|
||||
transform: rotate(0.5turn);
|
||||
}
|
||||
}
|
||||
|
||||
.expander-content {
|
||||
padding: 3px 6px;
|
||||
background-color: color-mix(in srgb, var(--view-fg-color) 4%, transparent);
|
||||
border-radius: vendor.$menu_radius;
|
||||
}
|
||||
|
||||
state-group-item-row {
|
||||
padding: 6px 12px;
|
||||
margin: 2px 0;
|
||||
border-radius: vendor.$menu_radius;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
|
||||
&.has-open-popup {
|
||||
background-color: vendor.$hover_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message-visual-media {
|
||||
border-radius: vendor.$menu_radius;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
}
|
||||
|
||||
.visual-content {
|
||||
&.opaque-bg {
|
||||
background-color: var(--border-color);
|
||||
}
|
||||
|
||||
> .overlaid {
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
> .instructions {
|
||||
padding: 12px;
|
||||
border-radius: vendor.$menu_radius;
|
||||
}
|
||||
|
||||
&.compact {
|
||||
> .instructions {
|
||||
padding: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
// Copied from .osd button style in https://gitlab.gnome.org/GNOME/libadwaita/-/blob/main/src/stylesheet/widgets/_buttons.scss
|
||||
&.has-placeholder {
|
||||
> .instructions {
|
||||
color: vendor.$osd_fg_color;
|
||||
background-color: rgb(0 0 0 / 65%);
|
||||
|
||||
@if config.$contrast == 'high' {
|
||||
box-shadow: 0 0 0 1px currentColor;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.compact) {
|
||||
&:hover {
|
||||
> .instructions {
|
||||
color: white;
|
||||
background-color: color-mix(in srgb, black calc(0.85 * 65%), currentColor calc(0.15 * 65%));
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
> .instructions {
|
||||
color: white;
|
||||
background-color: color-mix(in srgb, black calc(0.75 * 65%), currentColor calc(0.25 * 65%));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .spinner {
|
||||
min-width: 32px;
|
||||
min-height: 32px;
|
||||
}
|
||||
|
||||
> button {
|
||||
// Leave enough space at the start to click to be able to view small images.
|
||||
&:dir(ltr) {
|
||||
margin-left: 64px;
|
||||
}
|
||||
&:dir(rtl) {
|
||||
margin-right: 64px;
|
||||
}
|
||||
}
|
||||
|
||||
> image.osd.circular {
|
||||
min-width: 64px;
|
||||
min-height: 64px;
|
||||
border-radius: 32px;
|
||||
-gtk-icon-size: 32px;
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
border-radius: 4px;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
&.compact {
|
||||
> .spinner {
|
||||
min-width: 16px;
|
||||
min-height: 16px;
|
||||
}
|
||||
|
||||
> image.osd.circular {
|
||||
min-width: 32px;
|
||||
min-height: 32px;
|
||||
-gtk-icon-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message-reactions {
|
||||
flowboxchild {
|
||||
&:hover, &:active {
|
||||
// Cancel effect under .navigation-sidebar from libadwaita
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
&:dir(ltr) .toggle {
|
||||
padding: 1px 0 1px 6px;
|
||||
}
|
||||
|
||||
&:dir(rtl) .toggle {
|
||||
padding: 1px 6px 1px 0;
|
||||
}
|
||||
|
||||
.reaction-key-text {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.reaction-key-emoji {
|
||||
font-size: 1.1em;
|
||||
padding-right: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.reaction-count {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
}
|
||||
|
||||
.reaction-chooser {
|
||||
margin: 6px;
|
||||
|
||||
button {
|
||||
font-size: 1.3em;
|
||||
-gtk-icon-size: 1.3em;
|
||||
padding: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
read-receipts-list {
|
||||
min-height: 20px;
|
||||
min-width: 20px;
|
||||
padding: 6px;
|
||||
border-radius: 9999px;
|
||||
|
||||
@include vendor.focus-ring();
|
||||
|
||||
&:hover {
|
||||
background-color: vendor.$hover_color;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: vendor.$active_color;
|
||||
}
|
||||
|
||||
&:checked {
|
||||
background-color: vendor.$selected_color;
|
||||
}
|
||||
}
|
||||
|
||||
divider-row {
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
|
||||
label {
|
||||
opacity: var(--dim-opacity);
|
||||
}
|
||||
|
||||
&.new-messages {
|
||||
color: var(--accent-color);
|
||||
|
||||
label {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
separator {
|
||||
min-height: 2px;
|
||||
background-color: var(--accent-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typing-row {
|
||||
padding: 0 6px;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
.related-event-toolbar {
|
||||
padding: 0 6px 0 12px;
|
||||
|
||||
button {
|
||||
margin: 12px 6px;
|
||||
min-height: 24px;
|
||||
min-width: 24px;
|
||||
}
|
||||
|
||||
.event-content {
|
||||
@extend %nested-effect;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
button.send-text-message-button image {
|
||||
transform: translateX(2px);
|
||||
}
|
||||
|
||||
.composer-replacement {
|
||||
margin: 12px;
|
||||
}
|
224
data/resources/stylesheet/_session_view.scss
Normal file
@ -0,0 +1,224 @@
|
||||
// Session view.
|
||||
|
||||
@use 'vendor';
|
||||
@use 'room_history';
|
||||
@use 'room_details';
|
||||
|
||||
// Account switcher
|
||||
.account-switcher {
|
||||
list {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.account-switcher-row {
|
||||
border-radius: vendor.$menu_radius;
|
||||
margin: 3px 0px;
|
||||
padding: 6px 12px;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
button.account-switcher-row {
|
||||
font-weight: normal;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#new-login-icon {
|
||||
padding: 12px; // 2 * padding + pixel-size = size (of avatar)
|
||||
background-color: vendor.$button_color;
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
// Sidebar
|
||||
sidebar {
|
||||
.collapse-spacing {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
searchbar > revealer > box {
|
||||
padding-top: 0;
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
.sidebar-list row {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
|
||||
// Reset focus effect.
|
||||
&:focus-within {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
&:hover, &:selected {
|
||||
background: none;
|
||||
}
|
||||
|
||||
&:active sidebar-row > *:not(popover) {
|
||||
background-color: vendor.$active_color;
|
||||
}
|
||||
|
||||
&:selected sidebar-row > *:not(popover) {
|
||||
background-color: vendor.$selected_color;
|
||||
}
|
||||
|
||||
&:selected sidebar-row:not(.drop-mode) > *:not(popover):hover {
|
||||
background-color: vendor.$selected_hover_color;
|
||||
}
|
||||
|
||||
&:selected:active sidebar-row > *:not(popover) {
|
||||
background-color: vendor.$selected_active_color;
|
||||
}
|
||||
}
|
||||
|
||||
sidebar-row {
|
||||
> *:not(popover) {
|
||||
margin: 2px 6px 0;
|
||||
padding: 9px;
|
||||
border-radius: vendor.$menu_radius;
|
||||
}
|
||||
|
||||
@include vendor.focus-ring($target: '> *:not(popover)');
|
||||
|
||||
&:not(.drop-mode) > *:not(popover):hover {
|
||||
background-color: vendor.$hover_color;
|
||||
}
|
||||
|
||||
icon-item {
|
||||
background: none;
|
||||
font-weight: bold;
|
||||
|
||||
image {
|
||||
min-width: 24px; /* Same width as avatars, so the text is aligned */
|
||||
}
|
||||
}
|
||||
|
||||
sidebar-section {
|
||||
margin-top: 6px;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
|
||||
image.arrow {
|
||||
transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||
}
|
||||
|
||||
&:not(:checked) image.arrow {
|
||||
&:dir(ltr) {
|
||||
transform: rotate(-0.5turn);
|
||||
}
|
||||
|
||||
&:dir(rtl) {
|
||||
transform: rotate(0.5turn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.notification-count {
|
||||
font-weight: bold;
|
||||
font-size: 0.8em;
|
||||
border-radius: 9999px;
|
||||
min-width: 0.8em;
|
||||
min-height: 0.8em;
|
||||
line-height: 0.8em;
|
||||
padding: 0.4em 5px;
|
||||
color: currentColor;
|
||||
background-color: color-mix(in srgb, currentColor 15%, transparent);
|
||||
}
|
||||
|
||||
.highlight {
|
||||
color: var(--accent-fg-color);
|
||||
background-color: var(--accent-bg-color);
|
||||
}
|
||||
|
||||
&.drag > * {
|
||||
color: var(--accent-fg-color);
|
||||
background-color: var(--accent-bg-color);
|
||||
opacity: var(--disabled-opacity);
|
||||
}
|
||||
|
||||
&.drop-disabled > *:not(popover) {
|
||||
opacity: var(--disabled-opacity);
|
||||
}
|
||||
|
||||
&.drop-empty > *:not(popover) {
|
||||
color: var(--accent--color);
|
||||
}
|
||||
|
||||
icon-item.forget {
|
||||
color: var(--error-color);
|
||||
background: none;
|
||||
}
|
||||
|
||||
&.drop-active {
|
||||
background-color: color-mix(in srgb, var(--accent-color) 10%, transparent);
|
||||
|
||||
category {
|
||||
color: var(--accent-color);
|
||||
}
|
||||
|
||||
.dimmed, &.drop-empty .dimmed {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Explore
|
||||
.explore {
|
||||
.padded-button {
|
||||
min-width: 64px;
|
||||
}
|
||||
|
||||
.public-rooms row {
|
||||
border-radius: vendor.$menu_radius;
|
||||
margin: 6px 0;
|
||||
padding: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.explore-servers-popover list {
|
||||
background-color: transparent;
|
||||
color: inherit;
|
||||
|
||||
row {
|
||||
min-height: 36px;
|
||||
padding: 0 8px;
|
||||
border-radius: vendor.$menu_radius;
|
||||
margin: 0 0 2px;
|
||||
|
||||
button {
|
||||
min-height: 24px;
|
||||
min-width: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Invite
|
||||
.invite-room-name {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
// Event details dialog
|
||||
.event-details-dialog .sourceview {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
// Account settings
|
||||
.account-settings listview {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
// Account chooser dialog
|
||||
.account-chooser list {
|
||||
background: transparent;
|
||||
|
||||
row {
|
||||
margin-bottom: 6px;
|
||||
padding: 8px 12px;
|
||||
min-height: 32px;
|
||||
border-radius: vendor.$card_radius;
|
||||
}
|
||||
}
|
41
data/resources/stylesheet/_vendor.scss
Normal file
@ -0,0 +1,41 @@
|
||||
// SCSS reused directly from other projects.
|
||||
|
||||
@use 'config';
|
||||
|
||||
// https://gitlab.gnome.org/GNOME/libadwaita/-/blob/1.6.1/src/stylesheet/_colors.scss
|
||||
$focus_border_opacity: if(config.$contrast == 'high', 80%, 50%);
|
||||
$focus_border_color: color-mix(in srgb, var(--accent-color) $focus_border_opacity, transparent);
|
||||
$hover_color: color-mix(in srgb, currentColor 7%, transparent);
|
||||
$active_color: color-mix(in srgb, currentColor 16%, transparent);
|
||||
$selected_color: color-mix(in srgb, currentColor 10%, transparent);
|
||||
$selected_hover_color: color-mix(in srgb, currentColor 13%, transparent);
|
||||
$selected_active_color: color-mix(in srgb, currentColor 19%, transparent);
|
||||
$osd_fg_color: RGB(255 255 255 / 90%);
|
||||
|
||||
// https://gitlab.gnome.org/GNOME/libadwaita/-/blob/1.6.1/src/stylesheet/widgets/_buttons.scss
|
||||
$button_color: color-mix(in srgb, currentColor 10%, transparent);
|
||||
$button_hover_color: color-mix(in srgb, currentColor 15%, transparent);
|
||||
$button_active_color: color-mix(in srgb, currentColor 30%, transparent);
|
||||
|
||||
// https://gitlab.gnome.org/GNOME/libadwaita/-/blob/1.6.1/src/stylesheet/_common.scss
|
||||
$ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||
$focus_transition: outline-color 200ms $ease-out-quad,
|
||||
outline-width 200ms $ease-out-quad,
|
||||
outline-offset 200ms $ease-out-quad;
|
||||
$card_radius: 12px;
|
||||
$menu_radius: 9px;
|
||||
|
||||
// https://gitlab.gnome.org/GNOME/libadwaita/-/blob/1.6.1/src/stylesheet/_drawing.scss
|
||||
@mixin focus-ring($target: null, $width: 2px, $offset: -$width, $outer: false, $focus-state: ':focus:focus-visible', $transition: null) {
|
||||
& #{$target} {
|
||||
outline: 0 solid transparent;
|
||||
outline-offset: if($outer, $offset + 4px, $offset + $width + 4px);
|
||||
transition: $focus_transition, $transition;
|
||||
}
|
||||
|
||||
&#{$focus-state} #{$target} {
|
||||
outline-color: $focus_border_color;
|
||||
outline-width: $width;
|
||||
outline-offset: $offset;
|
||||
}
|
||||
}
|
34
deny.toml
Normal file
@ -0,0 +1,34 @@
|
||||
[advisories]
|
||||
yanked = "deny"
|
||||
ignore = [
|
||||
{ id = "RUSTSEC-2024-0436", reason = "paste is unmaintained but used by various dependencies" },
|
||||
]
|
||||
|
||||
[bans]
|
||||
multiple-versions = "allow"
|
||||
|
||||
# To check if a license if compatible with our GPL v3.0 license, see: https://www.gnu.org/licenses/license-list.html
|
||||
# Keep list sorted alphabetically.
|
||||
[licenses]
|
||||
unused-allowed-license = "deny"
|
||||
allow = [
|
||||
"Apache-2.0",
|
||||
"Apache-2.0 WITH LLVM-exception",
|
||||
"BSD-2-Clause",
|
||||
"BSD-3-Clause",
|
||||
"BSL-1.0",
|
||||
"GPL-3.0",
|
||||
"LGPL-2.1",
|
||||
"ISC",
|
||||
"MIT",
|
||||
"MPL-2.0",
|
||||
"Unicode-3.0",
|
||||
"Zlib",
|
||||
]
|
||||
|
||||
[sources]
|
||||
required-git-spec="rev"
|
||||
allow-git = [
|
||||
"https://github.com/ruma/ruma",
|
||||
"https://github.com/matrix-org/matrix-rust-sdk",
|
||||
]
|
45
fractal.doap
@ -5,8 +5,23 @@
|
||||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
|
||||
<name xml:lang="en">Fractal</name>
|
||||
<shortdesc xml:lang="en">Group messaging app</shortdesc>
|
||||
<description>Fractal is a messaging app for collaborative group communication, build on top of the decentralized and secure Matrix protocol.</description>
|
||||
<shortdesc xml:lang="en">Chat on Matrix</shortdesc>
|
||||
<description xml:lang="en">
|
||||
Fractal is a Matrix messaging app for GNOME written in Rust. Its interface is optimized for
|
||||
collaboration in large groups, such as free software projects, and will fit all screens, big or small.
|
||||
|
||||
Highlights:
|
||||
- Find rooms to discuss your favorite topics, or talk privately to people, securely thanks to end-to-end encryption
|
||||
- Send rich formatted messages, files, or your current location
|
||||
- Reply to specific messages, react with emoji, mention users or rooms, edit or remove messages
|
||||
- View images, and play audio and video directly in the conversation
|
||||
- See who has read messages, and who is typing
|
||||
- Log into multiple accounts at once (with Single-Sign On support)
|
||||
</description>
|
||||
|
||||
<homepage rdf:resource="https://gitlab.gnome.org/World/fractal" />
|
||||
<support-forum rdf:resource="https://discourse.gnome.org/tag/fractal" />
|
||||
<bug-database rdf:resource="https://gitlab.gnome.org/GNOME/fractal/issues" />
|
||||
|
||||
<programming-language>Rust</programming-language>
|
||||
<platform>GTK 4</platform>
|
||||
@ -14,20 +29,38 @@
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Julian Sparber</foaf:name>
|
||||
<gnome:userid>jsparber</gnome:userid>
|
||||
<foaf:name>Kévin Commaille</foaf:name>
|
||||
<gnome:userid>kcommaille</gnome:userid>
|
||||
<foaf:account>
|
||||
<foaf:OnlineAccount>
|
||||
<foaf:accountServiceHomepage rdf:resource="https://gitlab.gnome.org"/>
|
||||
<foaf:accountName>kcommaille</foaf:accountName>
|
||||
</foaf:OnlineAccount>
|
||||
</foaf:account>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Alexandre Franke</foaf:name>
|
||||
<gnome:userid>afranke</gnome:userid>
|
||||
<foaf:account>
|
||||
<foaf:OnlineAccount>
|
||||
<foaf:accountServiceHomepage rdf:resource="https://gitlab.gnome.org"/>
|
||||
<foaf:accountName>afranke</foaf:accountName>
|
||||
</foaf:OnlineAccount>
|
||||
</foaf:account>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Kévin Commaille</foaf:name>
|
||||
<gnome:userid>kcommaille</gnome:userid>
|
||||
<foaf:name>Julian Sparber</foaf:name>
|
||||
<gnome:userid>jsparber</gnome:userid>
|
||||
<foaf:account>
|
||||
<foaf:OnlineAccount>
|
||||
<foaf:accountServiceHomepage rdf:resource="https://gitlab.gnome.org"/>
|
||||
<foaf:accountName>jsparber</foaf:accountName>
|
||||
</foaf:OnlineAccount>
|
||||
</foaf:account>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
</Project>
|
||||
|
@ -1,5 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Source: https://gitlab.gnome.org/GNOME/fractal/blob/master/hooks/pre-commit.hook
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export LC_ALL=C
|
||||
|
||||
@ -94,7 +93,7 @@ check_rustup() {
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly
|
||||
export PATH=$PATH:$HOME/.cargo/bin
|
||||
if ! which rustup &> /dev/null; then
|
||||
echo -e "$Failed to install rustup"
|
||||
echo -e "$Could not install rustup"
|
||||
exit 2
|
||||
fi
|
||||
else
|
||||
@ -107,7 +106,7 @@ check_rustup() {
|
||||
install_cargo() {
|
||||
check_rustup -i
|
||||
if ! which cargo >/dev/null 2>&1; then
|
||||
echo -e "$Failed to install cargo"
|
||||
echo -e "$Could not install cargo"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
@ -115,19 +114,19 @@ install_cargo() {
|
||||
# Check if cargo is available. If not, ask to install it.
|
||||
check_cargo() {
|
||||
if ! which cargo >/dev/null 2>&1; then
|
||||
echo "Unable to find cargo for pre-commit checks"
|
||||
echo "Could not find cargo for pre-commit checks"
|
||||
|
||||
if [[ $force_install -eq 1 ]]; then
|
||||
install_cargo
|
||||
elif [ ! -t 1 ]; then
|
||||
exit 2
|
||||
elif check_rustup; then
|
||||
echo -e "$error rustup is installed but the cargo command isn't available"
|
||||
echo -e "$error rustup is installed but the cargo command isn’t available"
|
||||
exit 2
|
||||
else
|
||||
echo ""
|
||||
echo "y: Install cargo via rustup"
|
||||
echo "N: Don't install cargo and abort checks"
|
||||
echo "N: Don’t install cargo and abort checks"
|
||||
echo ""
|
||||
while true; do
|
||||
echo -n "Install cargo? [y/N]: "; read yn < /dev/tty
|
||||
@ -139,7 +138,7 @@ check_cargo() {
|
||||
[Nn]* | "" )
|
||||
exit 2
|
||||
;;
|
||||
* )
|
||||
* )
|
||||
echo $invalid
|
||||
;;
|
||||
esac
|
||||
@ -160,7 +159,7 @@ install_rustfmt() {
|
||||
echo -e "$Installing rustfmt…"
|
||||
rustup component add --toolchain nightly rustfmt
|
||||
if ! cargo +nightly fmt --version >/dev/null 2>&1; then
|
||||
echo -e "$Failed to install rustfmt"
|
||||
echo -e "$Could not install rustfmt"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
@ -171,32 +170,32 @@ run_rustfmt() {
|
||||
if [[ $force_install -eq 1 ]]; then
|
||||
install_rustfmt
|
||||
elif [ ! -t 1 ]; then
|
||||
echo "Unable to check Fractal’s code style, because rustfmt could not be run"
|
||||
echo "Could not check Fractal’s code style, because rustfmt could not be run"
|
||||
exit 2
|
||||
else
|
||||
echo "Rustfmt is needed to check Fractal’s code style, but it isn’t available"
|
||||
echo ""
|
||||
echo "y: Install rustfmt via rustup"
|
||||
echo "N: Don't install rustfmt and abort checks"
|
||||
echo "N: Don’t install rustfmt and abort checks"
|
||||
echo ""
|
||||
while true; do
|
||||
echo -n "Install rustfmt? [y/N]: "; read yn < /dev/tty
|
||||
case $yn in
|
||||
[Yy]* )
|
||||
[Yy]* )
|
||||
install_rustfmt
|
||||
break
|
||||
;;
|
||||
[Nn]* | "" )
|
||||
exit 2
|
||||
;;
|
||||
* )
|
||||
* )
|
||||
echo $invalid
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo -e "$Checking code style…"
|
||||
|
||||
if [[ $verbose -eq 1 ]]; then
|
||||
@ -239,7 +238,7 @@ install_typos() {
|
||||
echo -e "$Installing typos…"
|
||||
cargo install typos-cli
|
||||
if ! typos --version >/dev/null 2>&1; then
|
||||
echo -e "$Failed to install typos"
|
||||
echo -e "$Could not install typos"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
@ -250,25 +249,25 @@ run_typos() {
|
||||
if [[ $force_install -eq 1 ]]; then
|
||||
install_typos
|
||||
elif [ ! -t 1 ]; then
|
||||
echo "Unable to check spelling mistakes, because typos could not be run"
|
||||
echo "Could not check spelling mistakes, because typos could not be run"
|
||||
exit 2
|
||||
else
|
||||
echo "Typos is needed to check spelling mistakes, but it isn’t available"
|
||||
echo ""
|
||||
echo "y: Install typos via cargo"
|
||||
echo "N: Don't install typos and abort checks"
|
||||
echo "N: Don’t install typos and abort checks"
|
||||
echo ""
|
||||
while true; do
|
||||
echo -n "Install typos? [y/N]: "; read yn < /dev/tty
|
||||
case $yn in
|
||||
[Yy]* )
|
||||
[Yy]* )
|
||||
install_typos
|
||||
break
|
||||
;;
|
||||
[Nn]* | "" )
|
||||
exit 2
|
||||
;;
|
||||
* )
|
||||
* )
|
||||
echo $invalid
|
||||
;;
|
||||
esac
|
||||
@ -295,6 +294,124 @@ run_typos() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Install machete with cargo.
|
||||
install_machete() {
|
||||
echo -e "$Installing cargo-machete…"
|
||||
cargo install cargo-machete
|
||||
if ! cargo machete --version>/dev/null 2>&1; then
|
||||
echo -e "$Could not install cargo-machete"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
# Run machete to check for unused dependencies.
|
||||
run_machete() {
|
||||
if ! cargo machete --version >/dev/null 2>&1; then
|
||||
if [[ $force_install -eq 1 ]]; then
|
||||
install_machete
|
||||
elif [ ! -t 1 ]; then
|
||||
echo "Could not check for unused dependencies, because cargo-machete could not be run"
|
||||
exit 2
|
||||
else
|
||||
echo "cargo-machete is needed to check for unused dependencies, but it isn’t available"
|
||||
echo ""
|
||||
echo "y: Install cargo-machete via cargo"
|
||||
echo "N: Don’t install cargo-machete and abort checks"
|
||||
echo ""
|
||||
while true; do
|
||||
echo -n "Install cargo-machete? [y/N]: "; read yn < /dev/tty
|
||||
case $yn in
|
||||
[Yy]* )
|
||||
install_machete
|
||||
break
|
||||
;;
|
||||
[Nn]* | "" )
|
||||
exit 2
|
||||
;;
|
||||
* )
|
||||
echo $invalid
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "$Checking for unused dependencies…"
|
||||
|
||||
if [[ $verbose -eq 1 ]]; then
|
||||
echo ""
|
||||
cargo machete --version
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if ! cargo machete --with-metadata; then
|
||||
echo -e " Checking for unused dependencies result: $fail"
|
||||
echo "Please fix the above issues, either by removing the dependencies, or by adding the necessary configuration option in Cargo.toml (see cargo-machete documentation)"
|
||||
exit 1
|
||||
else
|
||||
echo -e " Checking for unused dependencies result: $ok"
|
||||
fi
|
||||
}
|
||||
|
||||
# Install cargo-deny with cargo.
|
||||
install_cargo_deny() {
|
||||
echo -e "$Installing cargo-deny…"
|
||||
cargo install cargo-deny
|
||||
if ! cargo deny --version>/dev/null 2>&1; then
|
||||
echo -e "$Could not install cargo-deny"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
# Run cargo-deny to check Rust dependencies.
|
||||
run_cargo_deny() {
|
||||
if ! cargo deny --version >/dev/null 2>&1; then
|
||||
if [[ $force_install -eq 1 ]]; then
|
||||
install_cargo_deny
|
||||
elif [ ! -t 1 ]; then
|
||||
echo "Could not check Rust dependencies, because cargo-deny could not be run"
|
||||
exit 2
|
||||
else
|
||||
echo "cargo-deny is needed to check the Rust dependencies, but it isn’t available"
|
||||
echo ""
|
||||
echo "y: Install cargo-deny via cargo"
|
||||
echo "N: Don’t install cargo-deny and abort checks"
|
||||
echo ""
|
||||
while true; do
|
||||
echo -n "Install cargo-deny? [y/N]: "; read yn < /dev/tty
|
||||
case $yn in
|
||||
[Yy]* )
|
||||
install_cargo_deny
|
||||
break
|
||||
;;
|
||||
[Nn]* | "" )
|
||||
exit 2
|
||||
;;
|
||||
* )
|
||||
echo $invalid
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "$Checking Rust dependencies…"
|
||||
|
||||
if [[ $verbose -eq 1 ]]; then
|
||||
echo ""
|
||||
cargo deny --version
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if ! cargo deny check; then
|
||||
echo -e " Checking Rust dependencies result: $fail"
|
||||
echo "Please fix the above issues, either by removing the dependencies, or by adding the necessary configuration option in deny.toml (see cargo-deny documentation)"
|
||||
exit 1
|
||||
else
|
||||
echo -e " Checking Rust dependencies result: $ok"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if files in POTFILES.in are correct.
|
||||
#
|
||||
# This checks, in that order:
|
||||
@ -358,7 +475,7 @@ check_potfiles() {
|
||||
|
||||
# Get Rust files with regex 'gettext(_f)?\('.
|
||||
rs_files=(`grep -lIrE 'gettext(_f)?\(' src/*`)
|
||||
|
||||
|
||||
# Get Rust files with macros, regex 'gettext!\('.
|
||||
rs_macro_files=(`grep -lIrE 'gettext!\(' src/*`)
|
||||
|
||||
@ -374,7 +491,7 @@ check_potfiles() {
|
||||
diff
|
||||
ui_potfiles=("${to_diff1[@]}")
|
||||
ui_files=("${to_diff2[@]}")
|
||||
|
||||
|
||||
to_diff1=("${rs_skip[@]}")
|
||||
to_diff2=("${rs_files[@]}")
|
||||
diff
|
||||
@ -504,7 +621,7 @@ install_cargo_sort() {
|
||||
echo -e "$Installing cargo-sort…"
|
||||
cargo install cargo-sort
|
||||
if ! cargo-sort --version >/dev/null 2>&1; then
|
||||
echo -e "$Failed to install cargo-sort"
|
||||
echo -e "$Could not install cargo-sort"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
@ -515,25 +632,25 @@ run_cargo_sort() {
|
||||
if [[ $force_install -eq 1 ]]; then
|
||||
install_cargo_sort
|
||||
elif [ ! -t 1 ]; then
|
||||
echo "Unable to check Cargo.toml sorting, because cargo-sort could not be run"
|
||||
echo "Could not check Cargo.toml sorting, because cargo-sort could not be run"
|
||||
exit 2
|
||||
else
|
||||
echo "Cargo-sort is needed to check the sorting in Cargo.toml, but it isn’t available"
|
||||
echo ""
|
||||
echo "y: Install cargo-sort via cargo"
|
||||
echo "N: Don't install cargo-sort and abort checks"
|
||||
echo "N: Don’t install cargo-sort and abort checks"
|
||||
echo ""
|
||||
while true; do
|
||||
echo -n "Install cargo-sort? [y/N]: "; read yn < /dev/tty
|
||||
case $yn in
|
||||
[Yy]* )
|
||||
[Yy]* )
|
||||
install_cargo_sort
|
||||
break
|
||||
;;
|
||||
[Nn]* | "" )
|
||||
exit 2
|
||||
;;
|
||||
* )
|
||||
* )
|
||||
echo $invalid
|
||||
;;
|
||||
esac
|
||||
@ -581,7 +698,7 @@ esac; shift; done
|
||||
if [[ $git_staged -eq 1 ]]; then
|
||||
staged_files=`git diff --name-only --cached`
|
||||
if [[ -z $staged_files ]]; then
|
||||
echo -e "$Failed to check files because none where staged"
|
||||
echo -e "$Could not check files because none where staged"
|
||||
exit 2
|
||||
fi
|
||||
else
|
||||
@ -596,6 +713,10 @@ run_rustfmt
|
||||
echo ""
|
||||
run_typos
|
||||
echo ""
|
||||
run_machete
|
||||
echo ""
|
||||
run_cargo_deny
|
||||
echo ""
|
||||
check_potfiles
|
||||
echo ""
|
||||
if [[ $git_staged -eq 1 ]]; then
|
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Depends on: scripts/checks.sh
|
||||
# Depends on: hooks/checks.sh
|
||||
|
||||
# Style helpers
|
||||
act="\e[1;32m"
|
||||
@ -11,7 +11,7 @@ res="\e[0m"
|
||||
echo "-- Pre-commit checks --"
|
||||
echo "To ignore these checks next time, run: git commit --no-verify"
|
||||
echo ""
|
||||
if scripts/checks.sh --git-staged; then
|
||||
if hooks/checks.sh --git-staged; then
|
||||
echo ""
|
||||
echo -e "Pre-commit checks result: ${pos}ok${res}"
|
||||
elif [[ $? -eq 2 ]]; then
|
||||
|
59
meson.build
@ -1,8 +1,8 @@
|
||||
project('fractal',
|
||||
'rust',
|
||||
version: '6.rc',
|
||||
version: '12',
|
||||
license: 'GPL-3.0-or-later',
|
||||
meson_version: '>= 0.59')
|
||||
meson_version: '>= 1.1')
|
||||
|
||||
i18n = import('i18n')
|
||||
gnome = import('gnome')
|
||||
@ -10,8 +10,8 @@ gnome = import('gnome')
|
||||
base_id = 'org.gnome.Fractal'
|
||||
application_id = base_id
|
||||
|
||||
major_version = '6'
|
||||
pre_release_version = 'rc'
|
||||
major_version = '12'
|
||||
pre_release_version = ''
|
||||
|
||||
version = major_version
|
||||
if pre_release_version != ''
|
||||
@ -19,31 +19,32 @@ if pre_release_version != ''
|
||||
endif
|
||||
full_version = version
|
||||
|
||||
dependency('glib-2.0', version: '>= 2.72') # update when changing gtk version
|
||||
dependency('gio-2.0', version: '>= 2.72') # always same version as glib
|
||||
dependency('gtk4', version: '>= 4.10.0')
|
||||
dependency(
|
||||
'libadwaita-1', version: '>= 1.4.0',
|
||||
fallback: ['libadwaita', 'libadwaita_dep'],
|
||||
default_options: ['tests=false', 'examples=false', 'vapi=false']
|
||||
)
|
||||
dependency('glib-2.0', version: '>= 2.76') # update when changing gtk version
|
||||
dependency('gio-2.0', version: '>= 2.76') # always same version as glib
|
||||
dependency('gtk4', version: '>= 4.16')
|
||||
dependency('libadwaita-1', version: '>= 1.7')
|
||||
|
||||
# Please keep these dependencies sorted.
|
||||
dependency('gstreamer-1.0', version: '>= 1.20')
|
||||
dependency('gstreamer-app-1.0', version: '>= 1.20')
|
||||
dependency('gstreamer-base-1.0', version: '>= 1.20')
|
||||
dependency('gstreamer-pbutils-1.0', version: '>= 1.20')
|
||||
dependency('gstreamer-play-1.0', version: '>= 1.20')
|
||||
dependency('gstreamer-video-1.0', version: '>= 1.20')
|
||||
dependency(
|
||||
'gtksourceview-5', version: '>= 5.0.0',
|
||||
fallback: ['gtksourceview', 'gtksource_dep'],
|
||||
default_options: ['gtk_doc=false', 'sysprof=false', 'gir=false', 'vapi=false', 'install_tests=false']
|
||||
)
|
||||
dependency('libpipewire-0.3', version: '>= 0.3.0')
|
||||
dependency('openssl', version: '>= 1.0.1')
|
||||
dependency('gtksourceview-5', version: '>= 5.0.0')
|
||||
dependency('libwebp', version: '>= 1.0.0')
|
||||
dependency('openssl', version: '>= 3.0.0')
|
||||
dependency('shumate-1.0', version: '>= 1.0.0')
|
||||
dependency('sqlite3', version: '>= 3.24.0')
|
||||
dependency('xdg-desktop-portal', version: '>= 1.14.1')
|
||||
|
||||
# Required by glycin crate
|
||||
dependency('lcms2', version: '>=2.12.0')
|
||||
|
||||
# Linux-only dependencies
|
||||
if build_machine.system() == 'linux'
|
||||
# Required by glycin crate
|
||||
dependency('libseccomp', version: '>= 2.5.0')
|
||||
endif
|
||||
|
||||
glib_compile_resources = find_program('glib-compile-resources', required: true)
|
||||
glib_compile_schemas = find_program('glib-compile-schemas', required: true)
|
||||
@ -65,7 +66,12 @@ iconsdir = datadir / 'icons'
|
||||
podir = meson.project_source_root() / 'po'
|
||||
gettext_package = meson.project_name()
|
||||
|
||||
if get_option('profile') == 'development'
|
||||
# When the `build-env` profile is used, we only want to set up the build
|
||||
# environment for the sandbox, we will not try to compile the app, so we can
|
||||
# remove some build steps.
|
||||
build_env_only = get_option('profile') == 'build-env'
|
||||
|
||||
if get_option('profile') == 'development' or build_env_only
|
||||
profile = 'Devel'
|
||||
application_id += '.Devel'
|
||||
elif get_option('profile') == 'hack'
|
||||
@ -93,14 +99,11 @@ if profile == 'Devel'
|
||||
run_command('cp', '-f', 'hooks/pre-commit.hook', '.git/hooks/pre-commit')
|
||||
endif
|
||||
|
||||
meson.add_dist_script(
|
||||
'build-aux/dist-vendor.sh',
|
||||
meson.project_build_root() / 'meson-dist' / meson.project_name() + '-' + version,
|
||||
meson.project_source_root()
|
||||
)
|
||||
if not build_env_only
|
||||
subdir('data')
|
||||
subdir('po')
|
||||
endif
|
||||
|
||||
subdir('data')
|
||||
subdir('po')
|
||||
subdir('src')
|
||||
|
||||
gnome.post_install(
|
||||
|
@ -6,7 +6,15 @@ option(
|
||||
'beta',
|
||||
'development',
|
||||
'hack',
|
||||
'build-env',
|
||||
],
|
||||
value: 'default',
|
||||
description: 'The build profile for Fractal. One of "default", "beta", "development" or "hack".'
|
||||
)
|
||||
option(
|
||||
'disable-glycin-sandbox',
|
||||
type : 'boolean',
|
||||
value : false,
|
||||
description: 'Whether the sandbox of glycin should be disabled.' +
|
||||
'This is only useful during development.'
|
||||
)
|
@ -1,5 +1,6 @@
|
||||
# please keep this list sorted alphabetically
|
||||
#
|
||||
bg
|
||||
ca
|
||||
cs
|
||||
da
|
||||
@ -16,12 +17,15 @@ fur
|
||||
fy
|
||||
gl
|
||||
he
|
||||
hi
|
||||
hr
|
||||
hu
|
||||
id
|
||||
it
|
||||
ja
|
||||
ka
|
||||
kk
|
||||
nb
|
||||
nl
|
||||
oc
|
||||
pl
|
||||
@ -34,6 +38,8 @@ sl
|
||||
sr
|
||||
sr@latin
|
||||
sv
|
||||
th
|
||||
tr
|
||||
uk
|
||||
uz
|
||||
zh_CN
|
||||
|
209
po/POTFILES.in
@ -9,146 +9,201 @@ src/account_switcher/account_switcher_button.ui
|
||||
src/account_switcher/account_switcher_popover.ui
|
||||
src/account_switcher/session_item.ui
|
||||
src/application.rs
|
||||
src/components/auth_dialog.ui
|
||||
src/components/editable_avatar.rs
|
||||
src/components/editable_avatar.ui
|
||||
src/components/loading_row.ui
|
||||
src/components/location_viewer.rs
|
||||
src/components/media_content_viewer.rs
|
||||
src/contrib/qr_code_scanner/mod.ui
|
||||
src/components/action_button.ui
|
||||
src/components/avatar/editable.rs
|
||||
src/components/avatar/editable.ui
|
||||
src/components/camera/qrcode_scanner.rs
|
||||
src/components/camera/qrcode_scanner.ui
|
||||
src/components/camera/viewfinder.rs
|
||||
src/components/crypto/identity_setup_view.rs
|
||||
src/components/crypto/identity_setup_view.ui
|
||||
src/components/crypto/recovery_setup_view.rs
|
||||
src/components/crypto/recovery_setup_view.ui
|
||||
src/components/dialogs/auth/in_browser_page.ui
|
||||
src/components/dialogs/auth/mod.rs
|
||||
src/components/dialogs/auth/mod.ui
|
||||
src/components/dialogs/auth/password_page.ui
|
||||
src/components/dialogs/message_dialogs.rs
|
||||
src/components/dialogs/room_preview.rs
|
||||
src/components/dialogs/room_preview.ui
|
||||
src/components/dialogs/user_profile.ui
|
||||
src/components/offline_banner.rs
|
||||
src/components/media/content_viewer.rs
|
||||
src/components/media/location_viewer.rs
|
||||
src/components/pill/at_room.rs
|
||||
src/components/power_level_selection/popover.ui
|
||||
src/components/power_level_selection/row.ui
|
||||
src/components/rows/loading_row.ui
|
||||
src/components/user_page.rs
|
||||
src/components/user_page.ui
|
||||
src/contrib/qr_code.rs
|
||||
src/error_page.rs
|
||||
src/error_page.ui
|
||||
src/greeter.rs
|
||||
src/greeter.ui
|
||||
src/identity_verification_view/accept_request_page.rs
|
||||
src/identity_verification_view/accept_request_page.ui
|
||||
src/identity_verification_view/cancelled_page.rs
|
||||
src/identity_verification_view/cancelled_page.ui
|
||||
src/identity_verification_view/choose_method_page.rs
|
||||
src/identity_verification_view/choose_method_page.ui
|
||||
src/identity_verification_view/completed_page.rs
|
||||
src/identity_verification_view/completed_page.ui
|
||||
src/identity_verification_view/confirm_qr_code_page.rs
|
||||
src/identity_verification_view/confirm_qr_code_page.ui
|
||||
src/identity_verification_view/mod.rs
|
||||
src/identity_verification_view/mod.ui
|
||||
src/identity_verification_view/no_supported_methods_page.rs
|
||||
src/identity_verification_view/no_supported_methods_page.ui
|
||||
src/identity_verification_view/qr_code_scanned_page.rs
|
||||
src/identity_verification_view/qr_code_scanned_page.ui
|
||||
src/identity_verification_view/room_left_page.ui
|
||||
src/identity_verification_view/sas_page.rs
|
||||
src/identity_verification_view/sas_page.ui
|
||||
src/identity_verification_view/scan_qr_code_page.rs
|
||||
src/identity_verification_view/scan_qr_code_page.ui
|
||||
src/identity_verification_view/wait_for_other_page.rs
|
||||
src/identity_verification_view/wait_for_other_page.ui
|
||||
src/login/advanced_dialog.ui
|
||||
src/login/greeter.ui
|
||||
src/login/homeserver_page.rs
|
||||
src/login/homeserver_page.ui
|
||||
src/login/idp_button.rs
|
||||
src/login/in_browser_page.rs
|
||||
src/login/in_browser_page.ui
|
||||
src/login/method_page.rs
|
||||
src/login/method_page.ui
|
||||
src/login/mod.rs
|
||||
src/login/mod.ui
|
||||
src/login/sso_page.ui
|
||||
src/secret.rs
|
||||
src/login/session_setup_view.ui
|
||||
src/login/sso_idp_button.rs
|
||||
src/secret/linux.rs
|
||||
src/session/model/session.rs
|
||||
src/session/model/room/member_role.rs
|
||||
src/session/model/notifications/mod.rs
|
||||
src/session/model/room/join_rule.rs
|
||||
src/session/model/room/mod.rs
|
||||
src/session/model/room/permissions.rs
|
||||
src/session/model/room_list/mod.rs
|
||||
src/session/model/sidebar_data/category/category_type.rs
|
||||
src/session/model/sidebar_data/section/name.rs
|
||||
src/session/model/sidebar_data/icon_item.rs
|
||||
src/session/view/account_settings/devices_page/device_list.rs
|
||||
src/session/view/account_settings/devices_page/device_row.rs
|
||||
src/session/view/account_settings/devices_page/device_row.ui
|
||||
src/session/view/account_settings/devices_page/mod.ui
|
||||
src/session/model/user_sessions_list/user_session.rs
|
||||
src/session/view/account_settings/encryption_page/import_export_keys_subpage.rs
|
||||
src/session/view/account_settings/encryption_page/import_export_keys_subpage.ui
|
||||
src/session/view/account_settings/encryption_page/mod.rs
|
||||
src/session/view/account_settings/encryption_page/mod.ui
|
||||
src/session/view/account_settings/general_page/change_password_subpage.rs
|
||||
src/session/view/account_settings/general_page/change_password_subpage.ui
|
||||
src/session/view/account_settings/general_page/deactivate_account_subpage.rs
|
||||
src/session/view/account_settings/general_page/deactivate_account_subpage.ui
|
||||
src/session/view/account_settings/general_page/log_out_subpage.rs
|
||||
src/session/view/account_settings/general_page/log_out_subpage.ui
|
||||
src/session/view/account_settings/general_page/mod.rs
|
||||
src/session/view/account_settings/general_page/mod.ui
|
||||
src/session/view/account_settings/mod.ui
|
||||
src/session/view/account_settings/notifications_page.rs
|
||||
src/session/view/account_settings/notifications_page.ui
|
||||
src/session/view/account_settings/security_page/ignored_users_subpage/ignored_user_row.rs
|
||||
src/session/view/account_settings/security_page/ignored_users_subpage/ignored_user_row.ui
|
||||
src/session/view/account_settings/security_page/ignored_users_subpage/mod.ui
|
||||
src/session/view/account_settings/security_page/import_export_keys_subpage.rs
|
||||
src/session/view/account_settings/security_page/import_export_keys_subpage.ui
|
||||
src/session/view/account_settings/security_page/mod.rs
|
||||
src/session/view/account_settings/security_page/mod.ui
|
||||
src/session/view/account_settings/safety_page/ignored_users_subpage/ignored_user_row.rs
|
||||
src/session/view/account_settings/safety_page/ignored_users_subpage/ignored_user_row.ui
|
||||
src/session/view/account_settings/safety_page/ignored_users_subpage/mod.ui
|
||||
src/session/view/account_settings/safety_page/mod.rs
|
||||
src/session/view/account_settings/safety_page/mod.ui
|
||||
src/session/view/account_settings/user_session/user_session_list_subpage.ui
|
||||
src/session/view/account_settings/user_session/user_session_row.ui
|
||||
src/session/view/account_settings/user_session/user_session_subpage.rs
|
||||
src/session/view/account_settings/user_session/user_session_subpage.ui
|
||||
src/session/view/content/explore/mod.ui
|
||||
src/session/view/content/explore/public_room_row.rs
|
||||
src/session/view/content/explore/servers_popover.ui
|
||||
src/session/view/content/explore/server_row.ui
|
||||
src/session/view/content/invite.rs
|
||||
src/session/view/content/invite.ui
|
||||
src/session/view/content/invite_request.rs
|
||||
src/session/view/content/invite_request.ui
|
||||
src/session/view/content/mod.ui
|
||||
src/session/view/content/room_details/general_page/mod.rs
|
||||
src/session/view/content/room_details/general_page/mod.ui
|
||||
src/session/view/content/room_details/addresses_subpage/completion_popover.ui
|
||||
src/session/view/content/room_details/addresses_subpage/mod.rs
|
||||
src/session/view/content/room_details/addresses_subpage/mod.ui
|
||||
src/session/view/content/room_details/edit_details_subpage.rs
|
||||
src/session/view/content/room_details/edit_details_subpage.ui
|
||||
src/session/view/content/room_details/general_page.rs
|
||||
src/session/view/content/room_details/general_page.ui
|
||||
src/session/view/content/room_details/history_viewer/audio_row.rs
|
||||
src/session/view/content/room_details/history_viewer/audio_row.ui
|
||||
src/session/view/content/room_details/history_viewer/audio.ui
|
||||
src/session/view/content/room_details/history_viewer/file_row.rs
|
||||
src/session/view/content/room_details/history_viewer/file_row.ui
|
||||
src/session/view/content/room_details/history_viewer/file.ui
|
||||
src/session/view/content/room_details/history_viewer/media.ui
|
||||
src/session/view/content/room_details/invite_subpage/invitee_list.rs
|
||||
src/session/view/content/room_details/history_viewer/visual_media.ui
|
||||
src/session/view/content/room_details/invite_subpage/list.rs
|
||||
src/session/view/content/room_details/invite_subpage/mod.rs
|
||||
src/session/view/content/room_details/invite_subpage/mod.ui
|
||||
src/session/view/content/room_details/members_page/members_list_view/extra_lists.rs
|
||||
src/session/view/content/room_details/members_page/members_list_view/member_row.ui
|
||||
src/session/view/content/room_details/join_rule_subpage.rs
|
||||
src/session/view/content/room_details/join_rule_subpage.ui
|
||||
src/session/view/content/room_details/member_row.ui
|
||||
src/session/view/content/room_details/members_page/members_list_view/membership_subpage_row.rs
|
||||
src/session/view/content/room_details/members_page/members_list_view/mod.rs
|
||||
src/session/view/content/room_details/members_page/members_list_view/mod.ui
|
||||
src/session/view/content/room_details/members_page/mod.rs
|
||||
src/session/view/content/room_details/mod.rs
|
||||
src/session/view/content/room_details/mod.ui
|
||||
src/session/view/content/room_history/event_actions.ui
|
||||
src/session/view/content/room_history/item_row.rs
|
||||
src/session/view/content/room_details/permissions/add_members_subpage.ui
|
||||
src/session/view/content/room_details/permissions/members_subpage.rs
|
||||
src/session/view/content/room_details/permissions/members_subpage.ui
|
||||
src/session/view/content/room_details/permissions/permissions_subpage.rs
|
||||
src/session/view/content/room_details/permissions/permissions_subpage.ui
|
||||
src/session/view/content/room_details/upgrade_dialog/mod.rs
|
||||
src/session/view/content/room_details/upgrade_dialog/mod.ui
|
||||
src/session/view/content/room_history/divider_row.rs
|
||||
src/session/view/content/room_history/event_actions/context_menu.rs
|
||||
src/session/view/content/room_history/event_actions/context_menu.ui
|
||||
src/session/view/content/room_history/event_actions/group.rs
|
||||
src/session/view/content/room_history/event_actions/quick_reaction_chooser.ui
|
||||
src/session/view/content/room_history/message_row/audio.rs
|
||||
src/session/view/content/room_history/message_row/content.rs
|
||||
src/session/view/content/room_history/message_row/file.rs
|
||||
src/session/view/content/room_history/message_row/file.ui
|
||||
src/session/view/content/room_history/message_row/location.rs
|
||||
src/session/view/content/room_history/message_row/media.rs
|
||||
src/session/view/content/room_history/message_row/message_state_stack.rs
|
||||
src/session/view/content/room_history/message_row/location.ui
|
||||
src/session/view/content/room_history/message_row/message_state_stack.ui
|
||||
src/session/view/content/room_history/message_row/mod.rs
|
||||
src/session/view/content/room_history/message_row/reaction/mod.rs
|
||||
src/session/view/content/room_history/message_row/reaction_list.ui
|
||||
src/session/view/content/room_history/message_row/reply.ui
|
||||
src/session/view/content/room_history/message_row/sender_name.rs
|
||||
src/session/view/content/room_history/message_row/text/widgets.rs
|
||||
src/session/view/content/room_history/message_row/visual_media.rs
|
||||
src/session/view/content/room_history/message_row/visual_media.ui
|
||||
src/session/view/content/room_history/message_toolbar/attachment_dialog.ui
|
||||
src/session/view/content/room_history/message_toolbar/completion/completion_popover.rs
|
||||
src/session/view/content/room_history/message_toolbar/mod.rs
|
||||
src/session/view/content/room_history/message_toolbar/mod.ui
|
||||
src/session/view/content/room_history/member_timestamp/row.rs
|
||||
src/session/view/content/room_history/mod.rs
|
||||
src/session/view/content/room_history/mod.ui
|
||||
src/session/view/content/room_history/read_receipts_list/mod.rs
|
||||
src/session/view/content/room_history/state_row/creation.rs
|
||||
src/session/view/content/room_history/state_row/creation.ui
|
||||
src/session/view/content/room_history/state_row/mod.rs
|
||||
src/session/view/content/room_history/state_row/tombstone.rs
|
||||
src/session/view/content/room_history/state_row/tombstone.ui
|
||||
src/session/view/content/room_history/sender_avatar/mod.rs
|
||||
src/session/view/content/room_history/sender_avatar/mod.ui
|
||||
src/session/view/content/room_history/state/content.rs
|
||||
src/session/view/content/room_history/state/creation.rs
|
||||
src/session/view/content/room_history/state/creation.ui
|
||||
src/session/view/content/room_history/state/group_row.rs
|
||||
src/session/view/content/room_history/title.ui
|
||||
src/session/view/content/room_history/typing_row.rs
|
||||
src/session/view/content/room_history/verification_info_bar.rs
|
||||
src/session/view/create_dm_dialog/mod.rs
|
||||
src/session/view/create_dm_dialog/mod.ui
|
||||
src/session/view/create_direct_chat_dialog/mod.rs
|
||||
src/session/view/create_direct_chat_dialog/mod.ui
|
||||
src/session/view/create_room_dialog.rs
|
||||
src/session/view/create_room_dialog.ui
|
||||
src/session/view/event_details_dialog.rs
|
||||
src/session/view/event_details_dialog.ui
|
||||
src/session/view/join_room_dialog.rs
|
||||
src/session/view/join_room_dialog.ui
|
||||
src/session/view/media_viewer.rs
|
||||
src/session/view/media_viewer.ui
|
||||
src/session/view/room_creation.rs
|
||||
src/session/view/room_creation.ui
|
||||
src/session/view/sidebar/category_row.rs
|
||||
src/session/view/sidebar/mod.rs
|
||||
src/session/view/sidebar/mod.ui
|
||||
src/session/view/sidebar/room_row.rs
|
||||
src/session/view/sidebar/row.rs
|
||||
src/session/view/user_page.rs
|
||||
src/session/view/user_page.ui
|
||||
src/session/view/user_profile_dialog.ui
|
||||
src/session/view/sidebar/section_row.rs
|
||||
src/session_list/mod.rs
|
||||
src/shortcuts.ui
|
||||
src/user_facing_error.rs
|
||||
src/utils/matrix.rs
|
||||
src/utils/media.rs
|
||||
src/utils/message_dialog.rs
|
||||
src/verification_view/identity_verification_view/accept_request_page.rs
|
||||
src/verification_view/identity_verification_view/accept_request_page.ui
|
||||
src/verification_view/identity_verification_view/cancelled_page.rs
|
||||
src/verification_view/identity_verification_view/cancelled_page.ui
|
||||
src/verification_view/identity_verification_view/choose_method_page.rs
|
||||
src/verification_view/identity_verification_view/choose_method_page.ui
|
||||
src/verification_view/identity_verification_view/completed_page.rs
|
||||
src/verification_view/identity_verification_view/completed_page.ui
|
||||
src/verification_view/identity_verification_view/confirm_qr_code_page.rs
|
||||
src/verification_view/identity_verification_view/confirm_qr_code_page.ui
|
||||
src/verification_view/identity_verification_view/no_supported_methods_page.rs
|
||||
src/verification_view/identity_verification_view/no_supported_methods_page.ui
|
||||
src/verification_view/identity_verification_view/qr_code_scanned_page.rs
|
||||
src/verification_view/identity_verification_view/qr_code_scanned_page.ui
|
||||
src/verification_view/identity_verification_view/sas_page.rs
|
||||
src/verification_view/identity_verification_view/sas_page.ui
|
||||
src/verification_view/identity_verification_view/scan_qr_code_page.rs
|
||||
src/verification_view/identity_verification_view/scan_qr_code_page.ui
|
||||
src/verification_view/identity_verification_view/wait_for_other_page.rs
|
||||
src/verification_view/identity_verification_view/wait_for_other_page.ui
|
||||
src/verification_view/session_verification_view.rs
|
||||
src/verification_view/session_verification_view.ui
|
||||
src/window.rs
|
||||
src/utils/matrix/media_message.rs
|
||||
src/utils/matrix/mod.rs
|
||||
src/utils/media/image/mod.rs
|
||||
src/utils/media/mod.rs
|
||||
src/window.ui
|
||||
|
@ -1,4 +1,4 @@
|
||||
# These are files that we don't want to translate
|
||||
# Please keep this file sorted alphabetically.
|
||||
src/i18n.rs
|
||||
src/utils/macros.rs
|
||||
src/utils/toast.rs
|
||||
|
5915
po/en_GB.po
7057
po/pt_BR.po
6650
po/zh_CN.po
@ -1,3 +0,0 @@
|
||||
[toolchain]
|
||||
channel = "nightly"
|
||||
components = ["rustfmt", "clippy"]
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 115 KiB |