// ==UserScript==
// @name GitLab Tweaks
// @namespace GLT
// @version 1.0.0
// @description Improve visual design of GitLab, to reduce visual and cognitive strain, and increase zen mindfulness
// @author joeytwiddle
// @copyright 2018, Paul "Joey" Clark (http://neuralyte.org/~joey)
// @license MIT
// @match https://gitlab.com/*
// @run-at document-start
// @grant GM_addStyle
// ==/UserScript==
/* eslint-env es6 */
(function() {
'use strict';
const generalFixes = true;
// Other fonts I considered: sans-serif, sans, Arial, "Noto Sans", "Open Sans"
const customFont = '"Open Sans", Arial, sans-serif';
const customMonospaceFont = '"Lucida Sans Typewriter", "Lucida Console", monospace';
// Some whitespace around the central content, to enhance zen state
const padTheCentralColumn = true;
const padTheHeader = true;
// Use only one of these, not both.
// This keeps the grey line separators, but adds some space above and below them (border-bottom)
const paddingAroundContentBlockSeparators = true;
// This removes the grey line separators, by turning them into larger transparent separators
const paddingInsteadOfContentBlockSeparators = false;
// Don't let the textarea grow too tall. (If it does, it's likely the submit button will be pushed offscreen!)
const limitHeightOfTextarea = true;
const showScrollbarOnIssueSidebar = true;
const smallScrollbars = true;
const hideSidebarsUntilHovered = true;
// Notes:
// We put `body` at the start of every selector to increase its specificity.
// That allows our CSS to override the site's CSS, even if we add ours early (which is desirable to avoid relayout).
if (generalFixes) {
// If the labels are just the right length, some of the "Request to merge ..." text will touch the "Open in Web IDE" button.
// We force a little gap on the right-hand side.
GM_addStyle(`
body .normal {
padding-right: 8px;
}
`);
}
if (typeof customFont !== 'undefined' && customFont) {
// The website's recommended fonts were: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"
GM_addStyle(`
body {
font-family: ${customFont} !important;
}
`);
}
if (typeof customMonospaceFont !== 'undefined' && customMonospaceFont) {
// The website's recommended monospace fonts were: "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace
GM_addStyle(`
.monospace, .commit-sha, .gfm-commit, .gfm-commit_range, .ref-name, .git-revision-dropdown .dropdown-content ul li a, .mr-state-widget .label-branch, .git-revision-dropdown-toggle, .commit-sha-group .label-monospace, .file-editor .file-title, .file-editor .editor-file-name, .ci-table .api, .git-clone-holder .form-control, .git-clone-holder .search form, .search .git-clone-holder form,
pre, tt, code, kbd, samp,
.md code,
ul.notes>li .note-body .note-text code {
font-family: ${customMonospaceFont} !important;
}
`);
}
if (padTheCentralColumn) {
GM_addStyle(`
body .content-wrapper .container-fluid {
padding: 0 30px;
}
`);
}
if (padTheHeader) {
GM_addStyle(`
body .alert-wrapper {
padding-top: 10px;
}
body .breadcrumbs-container {
padding-bottom: 30px;
}
body .detail-page-header {
margin-bottom: 14px;
}
`);
}
if (paddingAroundContentBlockSeparators) {
GM_addStyle(`
body .content-block {
margin-bottom: 25px !important;
padding-bottom: 25px !important;
}
`);
}
if (paddingInsteadOfContentBlockSeparators) {
GM_addStyle(`
body .content-block {
border-bottom: 20px solid transparent;
}
`);
}
if (limitHeightOfTextarea) {
GM_addStyle(`
body textarea.js-gfm-input {
max-height: 60vh !important;
max-height: calc(100vh - 400px) !important;
}
`);
}
if (showScrollbarOnIssueSidebar) {
GM_addStyle(`
body .right-sidebar .issuable-sidebar {
width: calc(100% - 2px);
}
`);
}
if (smallScrollbars) {
// The body here is used to avoid modifying the outermost page scrollbar.
// Remove 'body *' if you want these to apply to the page scrollbar too.
GM_addStyle(`
body *::-webkit-scrollbar {
width: 8px;
background: #eee;
}
body *::-webkit-scrollbar-thumb {
background: #ccc;
border-radius: 10px;
}
/*
body *::-webkit-scrollbar-track {
box-shadow: inset 0 0 3px white;
border-radius: 10px;
}
*/
`);
}
if (hideSidebarsUntilHovered) {
GM_addStyle(`
.nav-sidebar > *, .right-sidebar > * {
opacity: 0;
transition: opacity 0.2s;
}
.nav-sidebar:hover > *, .right-sidebar:hover > * {
opacity: 1;
}
`);
}
/*
// This is good for increasing specificity, but it gets added too late, causing a relayout.
document.addEventListener('DOMContentLoaded', () => {
document.body.classList.add('vistweaks');
});
*/
})();