Uganda arrests Danish wildlife journalist Klaus Thymann amid press freedom concerns
Uganda arrests Danish wildlife journalist Klaus Thymann amid press freedom concerns
Read this story aloud
Listen to the clean text version of this article
Ready
3 min listen
Audio reading is not supported on this browser.
The Danish wildlife journalist was arrested while seeking work permits in Kampala, with authorities yet to disclose the alleged offences as concerns grow over increasing pressure on Uganda’s media
Ugandan authorities have reportedly arrested Danish wildlife journalist and investigative reporter Klaus Thymann over alleged wildlife-related offences, although officials have not disclosed the specific charges.
Thymann was arrested on Monday at the Uganda Wildlife Authority (UWA) headquarters in Kampala, where he had gone to obtain work permits. He is being held at Kira Road Police Station and is expected to be transferred to Kasese District in western Uganda, where the alleged offences are said to have occurred.
“Yes, we arrested him,” UWA spokesperson Bashir Hangi told The Monitor.
More To Read
- The international legal order is broken: Two key changes needed to fix it
- Kenya overhauls disaster financing after Sh188 billion flood losses stall economic recovery
- NMG Uganda keeps news flowing online after military raid hits broadcast operations
- Uganda orders evacuation of nationals as anti-migrant violence escalates in South Africa
- East African Press Councils warns growing attacks on media threaten democracy and press freedom
- Scientists link deadly European heatwave to fossil fuel-driven global warming
Authorities have not explained the reason for Thymann’s arrest, but reports suggest it may be linked to his environmental work in protected areas.
Thymann is widely known for documenting the Rwenzori Mountains, where he has extensively researched the shrinking glaciers caused by climate change.
In 2012, he conducted field surveys in the region with conservation teams, documenting early signs of glacier retreat.
Latest Stories
- LeBron James’ Lakers journey ends as NBA’s all-time scoring king moves on
- Trump suffers major defeat as US Supreme Court protects birthright citizenship for migrants’ children
- Nearly 50,000 missing after Venezuela twin earthquakes as death toll tops 1,700
- Kenya unveils Sh1.081 trillion plan to transform agriculture and create 2 million jobs
His updated findings, released in 2025, showed further ice loss and drew criticism from Kampala, which argued that the changes were due to natural causes rather than climate change.
The reported arrest comes amid growing concerns over increasing pressure on journalists in Uganda, where media workers and outlets have faced heightened government scrutiny and restrictions.
On Sunday, a military raid on the Nation Media Group Uganda premises in Namuwongo disrupted newspaper printing, television broadcasts and radio operations. Television and radio stations, including NTV Uganda, Spark TV, KFM and Dembe FM, were taken off air during the overnight operation.
The move drew criticism from media and human rights groups, which warned it threatened press freedom. Officials later said discussions were underway that could lead to the resumption of operations at the affected outlets.
“We have agreed that we shall reopen both Daily Monitor and NTV soon. However, we shall first have discussions with the management of both sister companies. I will inform them when we can have this meeting,” Patriotic League of Uganda (PLU) Central Executive Committee member Andrew Mwenda said on X.
Uganda’s Chief of Defence Forces, Gen Muhoozi Kainerugaba, who ordered the closures, later said consultations had also been extended to international partners before a final decision would be made.
“As comrade @AndrewMwenda said, we are having discussions with our allies in the UK and Europe about re-opening both NTV and Daily Monitor. We shall take the results of these discussions to Mzee for final approval,” Muhoozi wrote.
Other Topics To Read
Top Stories Today
- Cabinet approves funding boost for key Isiolo-Mandera highway sections
- Kenya eyes 2 million new jobs under Sh1.081 trillion agriculture plan
- LeBron James leaves Los Angeles Lakers after eight seasons
- US top court rejects Trump plan to end citizenship for children of illegal migrants
- Death toll rises above 1,700 after Venezuela quakes, 50,000 still missing
- State audit uncovers Sh6.2 billion payroll irregularities, triggers criminal investigation
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending
More than 80 Kenyans return home from South Africa amid xenophobic unrestNews
|Mary Wambui
|11 hours ago
Refugees under new UK entry scheme to pay back for support granted, Minister saysNews
|Mary Wambui
|8 hours ago
Court rules Ruto’s Cabinet is unconstitutional, orders gender-balanced appointments within 120 daysNational
|Carolyne Kubwa
|10 hours ago
Gachagua alleges crackdown on media, says journalists at risk ahead of 2027 pollsNews
|Lucy Mumbi
|16 hours ago
Mombasa strengthens global cruise tourism appeal with landmark Asian cruise ship visitNews
|Farhiya Hussein
|8 hours ago
Five records Cape Verde have broken at FIFA World Cup 2026Sports
|The New Times
|16 hours ago
Records tumble as historic 2026 FIFA World Cup group stage rewrites football historySports
|Erick Kariuki
|1 day ago
Police arrest suspect linked to violent robberies in Mombasa and MalindiCoast
|Farhiya Hussein
|1 day ago
Only 20 per cent of sunscreens meet safety and effectiveness standards, new report findsHealth
|Charity Kilei
|1 day ago
Study warns against screen use in babies, links early exposure to developmental risksHealth
|Charity Kilei
|23 hours ago
