Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8f9c18cef | ||
|
|
56bccf2b4f | ||
|
|
ec4eccd769 | ||
|
|
2ed026ba32 | ||
|
|
a4996c84bd | ||
|
|
7b42055a20 |
34
.gitlab-ci.yml
Normal file
34
.gitlab-ci.yml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
- release
|
||||||
|
|
||||||
|
variables:
|
||||||
|
DEBIAN_FRONTEND: 'noninteractive'
|
||||||
|
|
||||||
|
job-build:
|
||||||
|
stage: build
|
||||||
|
image: ubuntu:rolling
|
||||||
|
script:
|
||||||
|
- sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
|
||||||
|
- apt-get update
|
||||||
|
- apt-get build-dep -y tint2
|
||||||
|
- apt-get install -y libgtk-3-dev git
|
||||||
|
- git clean -ffdx
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
- cmake ..
|
||||||
|
- make -j
|
||||||
|
|
||||||
|
job-release:
|
||||||
|
stage: release
|
||||||
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_TAG =~ /^v.*/
|
||||||
|
script:
|
||||||
|
- echo 'running release_job'
|
||||||
|
release:
|
||||||
|
name: 'Release $CI_COMMIT_TAG'
|
||||||
|
description: 'Release $CI_COMMIT_TAG / $CI_COMMIT_SHA'
|
||||||
|
tag_name: '$CI_COMMIT_TAG'
|
||||||
|
ref: '$CI_COMMIT_SHA'
|
||||||
@@ -286,6 +286,9 @@ add_dependencies( tint2 version )
|
|||||||
set_target_properties( tint2 PROPERTIES COMPILE_FLAGS "-Wall -Wpointer-arith -fno-strict-aliasing -pthread -std=${CSTD} ${ASAN_C_FLAGS} ${TRACING_C_FLAGS}" )
|
set_target_properties( tint2 PROPERTIES COMPILE_FLAGS "-Wall -Wpointer-arith -fno-strict-aliasing -pthread -std=${CSTD} ${ASAN_C_FLAGS} ${TRACING_C_FLAGS}" )
|
||||||
set_target_properties( tint2 PROPERTIES LINK_FLAGS "-pthread -fno-strict-aliasing ${ASAN_L_FLAGS} ${BACKTRACE_L_FLAGS} ${TRACING_L_FLAGS}" )
|
set_target_properties( tint2 PROPERTIES LINK_FLAGS "-pthread -fno-strict-aliasing ${ASAN_L_FLAGS} ${BACKTRACE_L_FLAGS} ${TRACING_L_FLAGS}" )
|
||||||
|
|
||||||
|
add_executable(tint2-send src/tint2-send/tint2-send.c)
|
||||||
|
target_link_libraries(tint2-send ${X11_LIBRARIES})
|
||||||
|
|
||||||
install( TARGETS tint2 DESTINATION bin )
|
install( TARGETS tint2 DESTINATION bin )
|
||||||
install( FILES tint2.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps )
|
install( FILES tint2.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps )
|
||||||
install( FILES tint2.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications )
|
install( FILES tint2.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications )
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
2021-12-04 17.0.2
|
||||||
|
- Fixes:
|
||||||
|
- On dual monitor, when minimizing Chrome window it minimizes on the wrong monitor panel (issue #818)
|
||||||
2021-05-29 17.0.1
|
2021-05-29 17.0.1
|
||||||
- Fixes:
|
- Fixes:
|
||||||
- Crash on panel cleanup in single-monitor execp (issue #801)
|
- Crash on panel cleanup in single-monitor execp (issue #801)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Latest stable release: 17.0.1
|
# Latest stable release: 17.0.2
|
||||||
Changes: https://gitlab.com/o9000/tint2/blob/17.0.1/ChangeLog
|
Changes: https://gitlab.com/o9000/tint2/blob/17.0.2/ChangeLog
|
||||||
|
|
||||||
Documentation: [doc/tint2.md](doc/tint2.md)
|
Documentation: [doc/tint2.md](doc/tint2.md)
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ Compile it with (after you install the [dependencies](https://gitlab.com/o9000/t
|
|||||||
```
|
```
|
||||||
git clone https://gitlab.com/o9000/tint2.git
|
git clone https://gitlab.com/o9000/tint2.git
|
||||||
cd tint2
|
cd tint2
|
||||||
git checkout 17.0.1
|
git checkout 17.0.2
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
|
|||||||
@@ -199,9 +199,9 @@ pre {
|
|||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1 id="latest-stable-release-17-0-1"><span class="md2man-title">Latest</span> <span class="md2man-section">stable</span> <span class="md2man-date">release:</span> <span class="md2man-source">17.0.1</span><a name="latest-stable-release-17-0-1" href="#latest-stable-release-17-0-1" class="md2man-permalink" title="permalink"></a></h1><p>Changes: <a href="https://gitlab.com/o9000/tint2/blob/17.0.1/ChangeLog">https://gitlab.com/o9000/tint2/blob/17.0.1/ChangeLog</a></p><p>Documentation: <a href="manual.html">manual.html</a></p><p>Compile it with (after you install the <a href="https://gitlab.com/o9000/tint2/wikis/Install#dependencies">dependencies</a>):</p><div class="highlight"><pre class="highlight plaintext"><code>git clone https://gitlab.com/o9000/tint2.git
|
<h1 id="latest-stable-release-17-0-2"><span class="md2man-title">Latest</span> <span class="md2man-section">stable</span> <span class="md2man-date">release:</span> <span class="md2man-source">17.0.2</span><a name="latest-stable-release-17-0-2" href="#latest-stable-release-17-0-2" class="md2man-permalink" title="permalink"></a></h1><p>Changes: <a href="https://gitlab.com/o9000/tint2/blob/17.0.2/ChangeLog">https://gitlab.com/o9000/tint2/blob/17.0.2/ChangeLog</a></p><p>Documentation: <a href="manual.html">manual.html</a></p><p>Compile it with (after you install the <a href="https://gitlab.com/o9000/tint2/wikis/Install#dependencies">dependencies</a>):</p><div class="highlight"><pre class="highlight plaintext"><code>git clone https://gitlab.com/o9000/tint2.git
|
||||||
cd tint2
|
cd tint2
|
||||||
git checkout 17.0.1
|
git checkout 17.0.2
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.TH TINT2 1 "2021\-05\-29" 17.0.1
|
.TH TINT2 1 "2021\-12\-04" 17.0.2
|
||||||
.SH NAME
|
.SH NAME
|
||||||
.PP
|
.PP
|
||||||
tint2 \- lightweight panel/taskbar
|
tint2 \- lightweight panel/taskbar
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# TINT2 1 "2021-05-29" 17.0.1
|
# TINT2 1 "2021-12-04" 17.0.2
|
||||||
|
|
||||||
## NAME
|
## NAME
|
||||||
tint2 - lightweight panel/taskbar
|
tint2 - lightweight panel/taskbar
|
||||||
|
|||||||
@@ -169,31 +169,40 @@ int get_window_desktop(Window win)
|
|||||||
return best_match;
|
return best_match;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define swap(a, b) do { __typeof__(a) _tmp = (a); (a) = (b); (b) = _tmp; } while(0)
|
||||||
|
|
||||||
|
int get_interval_overlap(int a1, int a2, int b1, int b2)
|
||||||
|
{
|
||||||
|
if (a1 > b1) {
|
||||||
|
swap(a1, b1);
|
||||||
|
swap(a2, b2);
|
||||||
|
}
|
||||||
|
if (b1 <= a2)
|
||||||
|
return a2 - b1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int get_window_monitor(Window win)
|
int get_window_monitor(Window win)
|
||||||
{
|
{
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
get_window_coordinates(win, &x, &y, &w, &h);
|
get_window_coordinates(win, &x, &y, &w, &h);
|
||||||
|
|
||||||
int best_match = -1;
|
int best_match = 0;
|
||||||
int match_right = 0;
|
int best_area = -1;
|
||||||
int match_bottom = 0;
|
|
||||||
// There is an ambiguity when a window is right on the edge between screens.
|
|
||||||
// In that case, prefer the monitor which is on the right and bottom of the window's top-left corner.
|
|
||||||
for (int i = 0; i < server.num_monitors; i++) {
|
for (int i = 0; i < server.num_monitors; i++) {
|
||||||
if (x >= server.monitors[i].x && x <= (server.monitors[i].x + server.monitors[i].width) &&
|
int commonx = get_interval_overlap(x, x + w, server.monitors[i].x, server.monitors[i].x + server.monitors[i].width);
|
||||||
y >= server.monitors[i].y && y <= (server.monitors[i].y + server.monitors[i].height)) {
|
int commony = get_interval_overlap(y, y + h, server.monitors[i].y, server.monitors[i].y + server.monitors[i].height);
|
||||||
int current_right = x < (server.monitors[i].x + server.monitors[i].width);
|
int area = commonx * commony;
|
||||||
int current_bottom = y < (server.monitors[i].y + server.monitors[i].height);
|
if (0)
|
||||||
if (best_match < 0 || (!match_right && current_right) || (!match_bottom && current_bottom)) {
|
printf("Monitor %d (%dx%d+%dx%d): win (%dx%d+%dx%d) area %dx%d=%d\n",
|
||||||
|
i, server.monitors[i].x, server.monitors[i].y, server.monitors[i].width, server.monitors[i].height,
|
||||||
|
x, y, w, h,
|
||||||
|
commonx, commony, area);
|
||||||
|
if (area > best_area) {
|
||||||
|
best_area = area;
|
||||||
best_match = i;
|
best_match = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (best_match < 0)
|
|
||||||
best_match = 0;
|
|
||||||
// fprintf(stderr, "tint2: desktop %d, window %lx %s : monitor %d, (%d, %d)\n", 1 + get_current_desktop(), win,
|
|
||||||
// get_task(win) ? get_task(win)->title : "??", best_match+1, x, y);
|
|
||||||
return best_match;
|
return best_match;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user