Greasy Fork is available in English.
Make Hacker News more legible
// ==UserScript==// @name Hacker News// @namespace http://tampermonkey.net/// @version 24// @description Make Hacker News more legible// @author Martin Gladdish// @supportURL https://github.com/mgladdish/website-customisations// @match https://news.ycombinator.com/*// @icon https://www.google.com/s2/favicons?sz=64&domain=ycombinator.com// @license MIT// ==/UserScript==const tampermonkeyScript = function() {'use strict';document.head.insertAdjacentHTML("beforeend", `<style>:root {--colour-hn-orange: #ff6600;--colour-hn-orange-pale: rgba(255, 102, 0, 0.05);--gutter: 0.5rem;--border-radius: 3px;}/* Reset font everywhere */html, body, td, .title, .comment, .default {font-family: 'Verdana', 'Arial', sans-serif;}html, body {margin-top: 0;}body {padding: 0;margin: 0;}body, td, .title, .pagetop, .comment {font-size: 1rem;}.votelinks, html[op='news'] .title {vertical-align: inherit;}.comment-tree .votelinks,html[op='threads'] .votelinks,html[op='newcomments'] .votelinks{vertical-align: top;}span.titleline {font-size: 1rem;margin-top: var(--gutter);margin-bottom: var(--gutter);display: block;}html[op='item'] span.titleline {font-size: 1.2rem;}.rank {display: none}html[op='news'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(1),html[op='newest'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(1),html[op='ask'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(1),html[op='newcomments'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(1),html[op='shownew'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(1),html[op='submitted'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(1),html[op='favorites'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(2),html[op='front'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(2),html[op='show'] #hnmain > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > table:nth-child(2) {margin-left: var(--gutter);}.sitebit.comhead {margin-left: var(--gutter);}.subtext, .subline {font-size: .75rem;}#hnmain {width: 100%;background-color: white;}/* Menu bar */#hnmain > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) {padding: var(--gutter);}#hnmain > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) {padding-right: var(--gutter) !important;}.comment, .toptext {max-width: 40em;}.toptext, a, a:visited {color: black;}a:hover {text-decoration: underline;}input {padding: var(--gutter);}input, textarea {background-color: white;border: 2px solid var(--colour-hn-orange);border-radius: var(--border-radius);}input[type='button'] {cursor: pointer;}/* Custom styles added via javascript */.downvoted {background-color: rgb(245, 245, 245);border-radius: var(--border-radius);padding: 6px;}.downvoted .commtext {color: black;font-size: smaller;}.quote {border-left: 3px solid var(--colour-hn-orange);padding: 6px 6px 6px 9px;font-style: italic;background-color: var(--colour-hn-orange-pale);border-radius: var(--border-radius);}.hidden {display: none;}.showComment a, .hideComment, .hideComment:link, .hideComment:visited {color: var(--colour-hn-orange);text-decoration: underline;}.hideComment {margin-left: var(--gutter);}</style>`);const comments = document.querySelectorAll('.commtext');comments.forEach(e => {if (!e.classList.contains('c00')) {e.parentElement.classList.add('downvoted');}});let node = null;let nodes = [];const ps = document.evaluate("//p[starts-with(., '>')]", document.body)while (node = ps.iterateNext()) {nodes.push(node);}const spans = document.evaluate("//span[starts-with(., '>')]", document.body)while (node = spans.iterateNext()) {nodes.push(node);}nodes.forEach((n) => {const textNode = Array.from(n.childNodes).find((n) => n.nodeType === Node.TEXT_NODE);if (textNode) {const p = document.createElement('p');p.classList.add('quote');p.innerText = textNode.data.replace(">", "");n.firstChild.replaceWith(p);} else {n.classList.add('quote');n.innerText = n.innerText.replace(">", "");}});const addComment = document.querySelector("html[op='item'] .fatitem tr:last-of-type");if (addComment) {addComment.classList.add('hidden');const showComment = document.createElement('tr');showComment.innerHTML = `<td colspan='2'></td><td><a href='#'>show comment box</a></td>`;showComment.classList.add('showComment');showComment.querySelector('a').addEventListener('click', (e) => {showComment.classList.toggle('hidden');addComment.classList.toggle('hidden');});addComment.parentNode.insertBefore(showComment, addComment);const hideComment = document.createElement('a');hideComment.setAttribute('href', '#');hideComment.innerText = 'hide comment box';hideComment.classList.add('hideComment');hideComment.addEventListener('click', (e) => {showComment.classList.toggle('hidden');addComment.classList.toggle('hidden');});const commentForm = document.querySelector("form[action='comment']");commentForm.append(hideComment);}}tampermonkeyScript();