Initial commit of knowledge base
25
.obsidian/app.json
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"legacyEditor": false,
|
||||
"livePreview": false,
|
||||
"promptDelete": false,
|
||||
"defaultViewMode": "preview",
|
||||
"foldIndent": true,
|
||||
"spellcheck": false,
|
||||
"spellcheckLanguages": [
|
||||
"en-US",
|
||||
"de-DE"
|
||||
],
|
||||
"trashOption": "system",
|
||||
"alwaysUpdateLinks": true,
|
||||
"newLinkFormat": "absolute",
|
||||
"showUnsupportedFiles": true,
|
||||
"attachmentFolderPath": "_Attachments",
|
||||
"pdfExportSettings": {
|
||||
"pageSize": "Letter",
|
||||
"landscape": false,
|
||||
"margin": "0",
|
||||
"downscalePercent": 100
|
||||
},
|
||||
"showLineNumber": false,
|
||||
"autoConvertHtml": false
|
||||
}
|
3
.obsidian/appearance.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"baseFontSize": 16
|
||||
}
|
6
.obsidian/community-plugins.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
[
|
||||
"dataview",
|
||||
"templater-obsidian",
|
||||
"markdown-table-editor",
|
||||
"obsidian-git"
|
||||
]
|
15
.obsidian/core-plugins.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
[
|
||||
"file-explorer",
|
||||
"global-search",
|
||||
"switcher",
|
||||
"graph",
|
||||
"backlink",
|
||||
"tag-pane",
|
||||
"page-preview",
|
||||
"note-composer",
|
||||
"command-palette",
|
||||
"starred",
|
||||
"markdown-importer",
|
||||
"word-count",
|
||||
"file-recovery"
|
||||
]
|
6
.obsidian/daily-notes.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"folder": "Daily Notes",
|
||||
"template": "_Templates/Daily Note Template",
|
||||
"autorun": false,
|
||||
"format": ""
|
||||
}
|
22
.obsidian/graph.json
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"collapse-filter": true,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": true,
|
||||
"showArrow": false,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1.5530454614312545,
|
||||
"close": false
|
||||
}
|
36
.obsidian/hotkeys.json
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"obsidian-tasks-plugin:toggle-done": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Meta",
|
||||
"Shift"
|
||||
],
|
||||
"key": "ArrowRight"
|
||||
}
|
||||
],
|
||||
"obsidian-tasks-plugin:edit-task": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "T"
|
||||
}
|
||||
],
|
||||
"editor:toggle-source": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "R"
|
||||
}
|
||||
],
|
||||
"editor:insert-wikilink": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "L"
|
||||
}
|
||||
]
|
||||
}
|
4
.obsidian/note-composer.json
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"askBeforeMerging": true,
|
||||
"template": "_Templates/Note Template"
|
||||
}
|
21
.obsidian/plugins/dataview/data.json
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"renderNullAs": "\\-",
|
||||
"taskLinkLocation": "end",
|
||||
"taskLinkText": "🔗",
|
||||
"taskCompletionTracking": false,
|
||||
"taskCompletionText": "completion",
|
||||
"warnOnEmptyResult": true,
|
||||
"refreshEnabled": true,
|
||||
"refreshInterval": 250,
|
||||
"defaultDateFormat": "MMMM dd, yyyy",
|
||||
"defaultDateTimeFormat": "h:mm a - MMMM dd, yyyy",
|
||||
"maxRecursiveRenderDepth": 6,
|
||||
"tableIdColumnName": "File",
|
||||
"tableGroupColumnName": "Group",
|
||||
"inlineQueryPrefix": "=",
|
||||
"inlineJsQueryPrefix": "$=",
|
||||
"enableDataviewJs": true,
|
||||
"enableInlineDataviewJs": true,
|
||||
"prettyRenderInlineFields": true,
|
||||
"schemaVersion": 1
|
||||
}
|
21004
.obsidian/plugins/dataview/main.js
vendored
Normal file
10
.obsidian/plugins/dataview/manifest.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "dataview",
|
||||
"name": "Dataview",
|
||||
"version": "0.5.43",
|
||||
"minAppVersion": "0.13.11",
|
||||
"description": "Complex data views for the data-obsessed.",
|
||||
"author": "Michael Brenan <blacksmithgu@gmail.com>",
|
||||
"authorUrl": "https://github.com/blacksmithgu",
|
||||
"isDesktopOnly": false
|
||||
}
|
142
.obsidian/plugins/dataview/styles.css
vendored
Normal file
|
@ -0,0 +1,142 @@
|
|||
/** Live Preview padding fixes, specifically for DataviewJS custom HTML elements. */
|
||||
.is-live-preview .block-language-dataviewjs > p, .is-live-preview .block-language-dataviewjs > span {
|
||||
line-height: 1.0;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Table Views **/
|
||||
/*****************/
|
||||
|
||||
/* List View Default Styling; rendered internally as a table. */
|
||||
.table-view-table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr, .table-view-table > tbody > tr {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr:hover {
|
||||
background-color: var(--text-selection);
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr > th {
|
||||
font-weight: 700;
|
||||
font-size: larger;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-bottom: solid;
|
||||
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr > td {
|
||||
text-align: left;
|
||||
border: none;
|
||||
font-weight: 400;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table ul, .table-view-table ol {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Rendered value styling for any view. */
|
||||
.dataview-result-list-root-ul {
|
||||
padding: 0em !important;
|
||||
margin: 0em !important;
|
||||
}
|
||||
|
||||
.dataview-result-list-ul {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Generic grouping styling. */
|
||||
.dataview.result-group {
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
/*******************/
|
||||
/** Inline Fields **/
|
||||
/*******************/
|
||||
|
||||
.dataview.inline-field-key {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-primary-alt);
|
||||
color: var(--text-nav-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--text-nav-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-standalone-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--text-nav-selected);
|
||||
}
|
||||
|
||||
/***************/
|
||||
/** Task View **/
|
||||
/***************/
|
||||
|
||||
.dataview.task-list-item, .dataview.task-list-basic-item {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
|
||||
background-color: var(--text-selection);
|
||||
box-shadow: -40px 0 0 var(--text-selection);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Error Views **/
|
||||
/*****************/
|
||||
|
||||
div.dataview-error-box {
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 4px dashed var(--background-secondary);
|
||||
}
|
||||
|
||||
.dataview-error-message {
|
||||
color: var(--text-muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*************************/
|
||||
/** Additional Metadata **/
|
||||
/*************************/
|
||||
|
||||
.dataview.small-text {
|
||||
font-size: smaller;
|
||||
color: var(--text-muted);
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.dataview.small-text::before {
|
||||
content: "(";
|
||||
}
|
||||
|
||||
.dataview.small-text::after {
|
||||
content: ")";
|
||||
}
|
22970
.obsidian/plugins/markdown-table-editor/main.js
vendored
Normal file
10
.obsidian/plugins/markdown-table-editor/manifest.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "markdown-table-editor",
|
||||
"name": "Markdown Table Editor",
|
||||
"version": "0.3.1",
|
||||
"minAppVersion": "0.12.0",
|
||||
"description": "An Obsidian plugin to provide an editor for Markdown tables. It can open CSV, Microsoft Excel/Google Sheets data as Markdown tables from Obsidian Markdown editor.",
|
||||
"author": "Ganessh Kumar R P <rpganesshkumar@gmail.com>",
|
||||
"authorUrl": "https://ganesshkumar.com",
|
||||
"isDesktopOnly": false
|
||||
}
|
65
.obsidian/plugins/markdown-table-editor/styles.css
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
|
||||
/* Disabling the color as it makes the text non-readable in dark theme */
|
||||
/* .mte > button {
|
||||
background-color: lightgray;
|
||||
} */
|
||||
|
||||
.button-container.mte {
|
||||
margin: 10pt 0;
|
||||
}
|
||||
|
||||
.button-container.mte > input {
|
||||
max-width: 100pt;
|
||||
margin: 5pt 10pt;
|
||||
}
|
||||
|
||||
.grid.mte {
|
||||
display: grid;
|
||||
width: fit-content;
|
||||
margin-top: 5px;
|
||||
border-right: 1px solid;
|
||||
border-top: 1px solid;
|
||||
}
|
||||
|
||||
.grid.mte > .cell-container.mte > .cell.mte {
|
||||
padding: 8px 4px;
|
||||
}
|
||||
|
||||
.grid.mte > .cell-container.mte {
|
||||
display: flex;
|
||||
border-left: 1px solid;
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
|
||||
/* Disabling the color as it makes the text non-readable in dark theme */
|
||||
/*
|
||||
.grid.mte > .cell-container.mte.header {
|
||||
background-color: lightgray;
|
||||
} */
|
||||
|
||||
.grid.mte > .cell-container.mte > .cell.mte {
|
||||
min-width: 100pt;
|
||||
max-width: 250pt;
|
||||
padding-left: 10pt;
|
||||
padding-right: 20pt;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.relative.mte {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.mte > .absolute {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 25%;
|
||||
}
|
||||
|
||||
.mte > .display-block {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.mte > .display-none {
|
||||
display: none;
|
||||
}
|
24
.obsidian/plugins/obsidian-git/data.json
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"commitMessage": "Automatic backup: {{date}}",
|
||||
"autoCommitMessage": "Automatic backup: {{date}}",
|
||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"autoSaveInterval": 0,
|
||||
"autoPushInterval": 0,
|
||||
"autoPullInterval": 0,
|
||||
"autoPullOnBoot": true,
|
||||
"disablePush": false,
|
||||
"pullBeforePush": true,
|
||||
"disablePopups": false,
|
||||
"listChangedFilesInMessageBody": false,
|
||||
"showStatusBar": true,
|
||||
"updateSubmodules": false,
|
||||
"syncMethod": "merge",
|
||||
"customMessageOnAutoBackup": false,
|
||||
"autoBackupAfterFileChange": false,
|
||||
"treeStructure": false,
|
||||
"refreshSourceControl": true,
|
||||
"basePath": "",
|
||||
"differentIntervalCommitAndPush": false,
|
||||
"changedFilesInStatusBar": false,
|
||||
"username": ""
|
||||
}
|
16076
.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
8
.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"id": "obsidian-git",
|
||||
"name": "Obsidian Git",
|
||||
"description": "Backup your vault with git.",
|
||||
"isDesktopOnly": true,
|
||||
"js": "main.js",
|
||||
"version": "1.31.0"
|
||||
}
|
465
.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
|
@ -0,0 +1,465 @@
|
|||
@keyframes loading {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.loading>svg {
|
||||
animation: 2s linear infinite loading;
|
||||
transform-origin: 50% 50%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.obsidian-git-center {
|
||||
margin: auto;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.obsidian-git-textarea {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.obsidian-git-center-button {
|
||||
display: block;
|
||||
margin: 20px auto;
|
||||
}
|
||||
|
||||
.tooltip.mod-left {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
.tooltip.mod-right {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
.obsidian-git-shortcuts {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.diff-err {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.diff-err-sign {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-d-none {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
|
||||
background-color: var(--background-primary);
|
||||
border-bottom: 1px solid var(--interactive-accent);
|
||||
font-family: var(--font-monospace);
|
||||
height: 35px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||
font-size: 14px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added {
|
||||
border: 1px solid #b4e2b4;
|
||||
border-radius: 5px 0 0 5px;
|
||||
color: #399839;
|
||||
padding: 2px;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
|
||||
border: 1px solid #e9aeae;
|
||||
border-radius: 0 5px 5px 0;
|
||||
color: #c33;
|
||||
margin-left: 1px;
|
||||
padding: 2px;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 15px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name {
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 3px;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse {
|
||||
-webkit-box-pack: end;
|
||||
-ms-flex-pack: end;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 12px;
|
||||
justify-content: flex-end;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected {
|
||||
background-color: #c8e1ff;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input {
|
||||
margin: 0 4px 0 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table {
|
||||
border-collapse: collapse;
|
||||
font-family: Menlo, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff {
|
||||
display: inline-block;
|
||||
margin-bottom: -8px;
|
||||
margin-right: -4px;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line {
|
||||
padding: 0 8em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||
display: inline-block;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||
padding: 0 4.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
-ms-user-select: text;
|
||||
user-select: text;
|
||||
vertical-align: middle;
|
||||
white-space: pre;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del {
|
||||
background-color: #ffb6ba;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del {
|
||||
background-color: #8d232881;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
|
||||
border-radius: 0.2em;
|
||||
display: inline-block;
|
||||
margin-top: -1px;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
|
||||
background-color: #97f295;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
|
||||
background-color: #1d921996;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline;
|
||||
padding: 0;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num1 {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num1,
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
padding: 0 0.5em;
|
||||
text-overflow: ellipsis;
|
||||
width: 3.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber {
|
||||
background-color: var(--background-primary);
|
||||
border: solid var(--background-modifier-border);
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: var(--text-muted);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
width: 7.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after {
|
||||
content: "\200b";
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||
background-color: var(--background-primary);
|
||||
border: solid var(--background-modifier-border);
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: var(--text-muted);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0 0.5em;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after {
|
||||
content: "\200b";
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||
background-color: #fee8e9;
|
||||
border-color: #e9aeae;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||
background-color: #dfd;
|
||||
border-color: #b4e2b4;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||
background-color: #521b1d83;
|
||||
border-color: #691d1d73;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||
background-color: rgba(30, 71, 30, 0.5);
|
||||
border-color: #13501381;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-info {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change {
|
||||
background-color: #fdf2d0;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change {
|
||||
background-color: #55492480;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change {
|
||||
background-color: #ded;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change {
|
||||
background-color: rgba(37, 78, 37, 0.418);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a {
|
||||
color: #3572b0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a:visited {
|
||||
color: #3572b0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list {
|
||||
display: block;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li {
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
margin: 0;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch {
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-icon {
|
||||
fill: currentColor;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted {
|
||||
color: #c33;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-added {
|
||||
color: #399839;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-changed {
|
||||
color: #d0b44c;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-moved {
|
||||
color: #3572b0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-tag {
|
||||
background-color: var(--background-primary);
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 10px;
|
||||
margin-left: 5px;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
|
||||
border: 2px solid #c33;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
|
||||
border: 1px solid #399839;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
|
||||
border: 1px solid #d0b44c;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
|
||||
border: 1px solid #3572b0;
|
||||
}
|
29
.obsidian/plugins/templater-obsidian/data.json
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"command_timeout": 5,
|
||||
"templates_folder": "_Templates",
|
||||
"templates_pairs": [
|
||||
[
|
||||
"",
|
||||
""
|
||||
]
|
||||
],
|
||||
"trigger_on_file_creation": true,
|
||||
"auto_jump_to_cursor": true,
|
||||
"enable_system_commands": false,
|
||||
"shell_path": "",
|
||||
"user_scripts_folder": "",
|
||||
"enable_folder_templates": true,
|
||||
"folder_templates": [
|
||||
{
|
||||
"folder": "Daily Notes",
|
||||
"template": "_Templates/Daily Note Template.md"
|
||||
}
|
||||
],
|
||||
"syntax_highlighting": true,
|
||||
"enabled_templates_hotkeys": [
|
||||
""
|
||||
],
|
||||
"startup_templates": [
|
||||
""
|
||||
]
|
||||
}
|
5795
.obsidian/plugins/templater-obsidian/main.js
vendored
Normal file
10
.obsidian/plugins/templater-obsidian/manifest.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "templater-obsidian",
|
||||
"name": "Templater",
|
||||
"version": "1.13.0",
|
||||
"description": "Create and use templates",
|
||||
"minAppVersion": "0.11.13",
|
||||
"author": "SilentVoid",
|
||||
"authorUrl": "https://github.com/SilentVoid13",
|
||||
"isDesktopOnly": false
|
||||
}
|
281
.obsidian/plugins/templater-obsidian/styles.css
vendored
Normal file
|
@ -0,0 +1,281 @@
|
|||
.templater_search {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.templater_div {
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.templater_div > .setting-item {
|
||||
border-top: none !important;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_div > .setting-item > .setting-item-control {
|
||||
justify-content: space-around;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div
|
||||
> .setting-item
|
||||
> .setting-item-control
|
||||
> .setting-editor-extra-setting-button {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_title {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.templater_template {
|
||||
align-self: center;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.templater_cmd {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div2 > .setting-item {
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.templater-prompt-div {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.templater-prompt-form {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-prompt-input {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-button-div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input:focus {
|
||||
border-color: var(--interactive-accent);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .templater-command-bg {
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
background-color: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command {
|
||||
font-size: 0.85em;
|
||||
font-family: var(--font-monospace);
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .templater-inline .cm-templater-command {
|
||||
background-color: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-opening-tag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-closing-tag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag {
|
||||
color: #008bff;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-execution-tag {
|
||||
color: #c0d700;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-raw-tag {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-keyword {
|
||||
color: #00a7aa;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-atom {
|
||||
color: #f39b35;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-number {
|
||||
color: #a06fca;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-type {
|
||||
color: #a06fca;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-def {
|
||||
color: #98e342;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-property {
|
||||
color: #d4d4d4;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-variable {
|
||||
color: #d4d4d4;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-variable-2 {
|
||||
color: #da7dae;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-variable-3 {
|
||||
color: #a06fca;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-type.cm-def {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-property.cm-def {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-callee {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-operator {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-qualifier {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-tag {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-tag.cm-bracket {
|
||||
color: #d4d4d4;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-attribute {
|
||||
color: #a06fca;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-comment {
|
||||
color: #696d70;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-comment.cm-tag {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute {
|
||||
color: #d4d4d4;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-string {
|
||||
color: #e6db74;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-string-2 {
|
||||
color: #f39b35;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-meta {
|
||||
color: #d4d4d4;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-builtin {
|
||||
color: #fc4384;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-header {
|
||||
color: #da7dae;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-hr {
|
||||
color: #98e342;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-link {
|
||||
color: #696d70;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.cm-error {
|
||||
border-bottom: 1px solid #c42412;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian pre.HyperMD-codeblock .cm-keyword {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.theme-dark
|
||||
.cm-s-obsidian
|
||||
.cm-templater-command.CodeMirror-activeline-background {
|
||||
background: #272727;
|
||||
}
|
||||
|
||||
.theme-dark .cm-s-obsidian .cm-templater-command.CodeMirror-matchingbracket {
|
||||
outline: 1px solid grey;
|
||||
color: #d4d4d4 !important;
|
||||
}
|
||||
|
||||
.CodeMirror-hints {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
|
||||
-webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
border-radius: 3px;
|
||||
border: 1px solid silver;
|
||||
|
||||
background: white;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
|
||||
max-height: 20em;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.CodeMirror-hint {
|
||||
margin: 0;
|
||||
padding: 0 4px;
|
||||
border-radius: 2px;
|
||||
white-space: pre;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li.CodeMirror-hint-active {
|
||||
background: #08f;
|
||||
color: white;
|
||||
}
|
3
.obsidian/starred.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"items": []
|
||||
}
|
5
.obsidian/switcher.json
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"showExistingOnly": true,
|
||||
"showAttachments": true,
|
||||
"showAllFileTypes": true
|
||||
}
|
3
.obsidian/templates.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"folder": "_Templates"
|
||||
}
|
116
.obsidian/workspace
vendored
Normal file
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"main": {
|
||||
"id": "fd558c09649c907c",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "c628b2d43de4836e",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "empty",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "226303c284f2eb89",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "4c21dc49c09cdec6",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "0889e053c850e925",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b7646ee3a0699675",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "tag:#ssh",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "98c3ed8c61dcefc3",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "starred",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 389.5
|
||||
},
|
||||
"right": {
|
||||
"id": "899055bb84f9c389",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "d8ce90da79d6ae34",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "719efb2f0badd730",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d65ca718a25595c6",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": false
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 464.5
|
||||
},
|
||||
"active": "0889e053c850e925",
|
||||
"lastOpenFiles": [
|
||||
"_Templates/Note Template.md",
|
||||
"README.md",
|
||||
"KB/Windows/Bootstrap.md",
|
||||
"KB/Linux/Pacman.md",
|
||||
"KB/Linux/Kernel.md",
|
||||
"KB/Linux/GNOME.md",
|
||||
"KB/Linux/Desktop/sway.md",
|
||||
"KB/Linux/Desktop/i3.md",
|
||||
"KB/Linux/DNS.md",
|
||||
"KB/Linux/Disk Speed.md"
|
||||
]
|
||||
}
|
113
.obsidian/workspace.sync-conflict-20220109-112743-7DR3R5I
vendored
Normal file
|
@ -0,0 +1,113 @@
|
|||
{
|
||||
"main": {
|
||||
"id": "fd558c09649c907c",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "72ef023041609715",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "_Dashboard.md",
|
||||
"mode": "preview"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "bbd5552cc2265ed7",
|
||||
"type": "mobile-drawer",
|
||||
"children": [
|
||||
{
|
||||
"id": "469caf0b4dac940f",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "32301a9a6d6e778c",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "faaeb522347e58dd",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aa35be4745a5e953",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "starred",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 0
|
||||
},
|
||||
"right": {
|
||||
"id": "037a8ffb8a65df83",
|
||||
"type": "mobile-drawer",
|
||||
"children": [
|
||||
{
|
||||
"id": "a9be7e06fe9ed2c7",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "calendar",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4bbab23eb04e103b",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "_Dashboard.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"active": "72ef023041609715",
|
||||
"lastOpenFiles": [
|
||||
"_Dashboard.md",
|
||||
"Daily Notes/2022-01-09.md",
|
||||
"Daily Notes/2022-01-08.md",
|
||||
"Notes/Music.md",
|
||||
"Notes/Shopping.md",
|
||||
"KB/Linux/Setup/Desktop/Disk Speed.md",
|
||||
"KB/Linux/Setup/Desktop/Audio/EQ.md",
|
||||
"KB/Linux/Android/ADB Backup.md",
|
||||
"KB/Hardware/Oneplus 7T Pro.md",
|
||||
"KB/Hardware/Router.md"
|
||||
]
|
||||
}
|
49
KB/Android/ADB Backup.md
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,android,adb,backup]
|
||||
---
|
||||
|
||||
# ADB Backup
|
||||
|
||||
A small tutorial on how to backup Android _application data_ via the `adb` tool. Currently, this is the only mechanism to backup the _entire_ device.
|
||||
|
||||
If defaults won't work for you, have a look at the options for `adb` in the scripts. Defaults are that only _app data_ of installed and systems apps will be backed up. **NOT THE STORAGE ITSELF!**
|
||||
|
||||
Android apps can exclude themselves from backup, thus this mechanism cannot back them up.
|
||||
|
||||
## Prerequisites
|
||||
### On your PC
|
||||
|
||||
You need the `adb` tools in order for this to work:
|
||||
|
||||
* Extract to e.g. `C:\Android` so that `adb.exe` resides in `C:\Android\adb.exe`
|
||||
* Add `C:\Android` to the environment to make the `adb` command available
|
||||
* Check in `cmd` (<Super/Windows key> + r, type 'cmd', press ENTER) if `adb devices` lists your device, else install additional driver for your device, also check that debug mode is enabled and your device is properly connected
|
||||
|
||||
### On your phone
|
||||
|
||||
* Enable `Developer Settings` by clicking 10+ times on the build number of your Android version
|
||||
* A new menu should be there: Developer Settings
|
||||
* In this new menu, enable `debug USB mode`
|
||||
|
||||
## Usage
|
||||
|
||||
### Backup
|
||||
|
||||
* Once installed, execute the script by double-clicking while your device is connected and debug mode is enabled
|
||||
* Confirm any screens on your phone
|
||||
* Your backup will be placed in a defaulf location, e.g. `C:\Users\<your-username>` in Windows or `/home/<your-username>` on UNIX
|
||||
|
||||
### Restore
|
||||
|
||||
Currently there's no script provided for restoring a backup as this is a single command in your command line. When your device is connected and in debug mode, use the following command pointing to the backup file you like to restore:
|
||||
|
||||
```
|
||||
# Windows (<Super/Windows key> + r, type 'cmd', press ENTER)
|
||||
adb restore C:\Users\<your-username>\mybackup.ab
|
||||
|
||||
# UNIX
|
||||
adb restore /home/<your-username>/mybackup.ab
|
||||
```
|
||||
|
||||
Confirm any dialogs popping up on your phone and maybe enter an encryption key to restore.
|
39
KB/Android/backup-smartphone
Normal file
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env sh
|
||||
# Requires working adb and abe (for extracting .ab files)
|
||||
|
||||
# DIR TO BACKUP
|
||||
BACKUP_DIR="$HOME";
|
||||
|
||||
# POSSIBLE BACKUP ADB PARAMETERS
|
||||
# -apk/-noapk: do/don't back up .apk files (default -noapk)
|
||||
# -obb/-noobb: do/don't back up .obb files (default -noobb)
|
||||
# -shared|-noshared: do/don't back up shared storage (default -noshared)
|
||||
# -all: back up all installed applications
|
||||
# -system|-nosystem: include system apps in -all (default -system)
|
||||
ADB_PARAMS="-apk -obb -noshared -all -system"
|
||||
|
||||
UNPACK=false # true or false, unpack .ab to .tar with abe
|
||||
|
||||
# DO NOT TOUCH BELOW
|
||||
date=$(date +"%Y-%m-%d_%H-%M-%S");
|
||||
BACKUP_FILE="$BACKUP_DIR/$date-backup.ab";
|
||||
BACKUP_FILE_TAR="$BACKUP_DIR/$date-backup.tar";
|
||||
|
||||
echo "Extracting to $BACKUP_FILE";
|
||||
echo "Taring to $BACKUP_FILE_TAR";
|
||||
echo "Using adb parameters $ADB_PARAMS";
|
||||
echo "";
|
||||
echo "Backup might take a while and adb shows no progress bar";
|
||||
echo "";
|
||||
echo "!!!!!!";
|
||||
echo "Storage is not included. Backup manually.";
|
||||
echo "Some folders might be included if you provide the -shared parameter to adb, but not all."
|
||||
echo "!!!!!!";
|
||||
|
||||
adb backup $ADB_PARAMS -f "$BACKUP_FILE";
|
||||
|
||||
if [ "$UNPACK" = true ]; then
|
||||
abe unpack "$BACKUP_FILE" "$BACKUP_FILE_TAR";
|
||||
fi
|
||||
|
||||
echo "Finished";
|
38
KB/Android/backup-smartphone-full
Normal file
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env sh
|
||||
# Requires working adb and abe (for extracting .ab files)
|
||||
|
||||
# DIR TO BACKUP
|
||||
BACKUP_DIR="$HOME";
|
||||
|
||||
# POSSIBLE BACKUP ADB PARAMETERS
|
||||
# -apk/-noapk: do/don't back up .apk files (default -noapk)
|
||||
# -obb/-noobb: do/don't back up .obb files (default -noobb)
|
||||
# -shared|-noshared: do/don't back up shared storage (default -noshared)
|
||||
# -all: back up all installed applications
|
||||
# -system|-nosystem: include system apps in -all (default -system)
|
||||
ADB_PARAMS="-apk -obb -shared -all -system"
|
||||
|
||||
UNPACK=false # true or false, unpack .ab to .tar with abe
|
||||
|
||||
# DO NOT TOUCH BELOW
|
||||
date=$(date +"%Y-%m-%d_%H-%M-%S");
|
||||
BACKUP_FILE="$BACKUP_DIR/$date-backup.ab";
|
||||
BACKUP_FILE_TAR="$BACKUP_DIR/$date-backup.tar";
|
||||
|
||||
echo "Extracting to $BACKUP_FILE";
|
||||
echo "Taring to $BACKUP_FILE_TAR";
|
||||
echo "Using adb parameters $ADB_PARAMS";
|
||||
echo "";
|
||||
echo "Backup might take a while and adb shows no progress bar";
|
||||
echo "";
|
||||
echo "!!!!!!";
|
||||
echo "Internal storage is included! Additional storage like SD cards are maybe not! Backup manually.";
|
||||
echo "!!!!!!";
|
||||
|
||||
adb backup $ADB_PARAMS -f "$BACKUP_FILE";
|
||||
|
||||
if [ "$UNPACK" = true ]; then
|
||||
abe unpack "$BACKUP_FILE" "$BACKUP_FILE_TAR";
|
||||
fi
|
||||
|
||||
echo "Finished";
|
30
KB/Android/backup-smartphone-full.bat
Normal file
|
@ -0,0 +1,30 @@
|
|||
chcp 65001
|
||||
@echo off
|
||||
|
||||
set "BACKUP_DIR=%systemdrive%%homepath%"
|
||||
set "BACKUP_FILE=%BACKUP_DIR%\%date%-backup.ab"
|
||||
|
||||
rem Determine adb
|
||||
where /q adb
|
||||
IF ERRORLEVEL 1 (
|
||||
ECHO adb is missing. Ensure it is installed and placed in your PATH
|
||||
EXIT 1
|
||||
) ELSE (
|
||||
echo Extracting to %BACKUP_FILE%
|
||||
echo Backup might take a while and adb shows no progress bar
|
||||
echo !!!!!!
|
||||
echo Internal storage is included! Additional storage like SD cards are maybe not! Backup manually.
|
||||
echo !!!!!!
|
||||
|
||||
rem POSSIBLE BACKUP ADB PARAMETERS
|
||||
rem -apk/-noapk: do/don't back up .apk files default -noapk
|
||||
rem -obb/-noobb: do/don't back up .obb files default -noobb
|
||||
rem -shared OR -noshared: do/don't back up shared storage default -noshared
|
||||
rem -all: back up all installed applications
|
||||
rem -system OR -nosystem: include system apps in -all default -system
|
||||
adb backup -apk -obb -shared -all -system -f "%BACKUP_FILE%"
|
||||
|
||||
echo Finished
|
||||
)
|
||||
|
||||
PAUSE
|
31
KB/Android/backup-smartphone.bat
Normal file
|
@ -0,0 +1,31 @@
|
|||
chcp 65001
|
||||
@echo off
|
||||
|
||||
set "BACKUP_DIR=%systemdrive%%homepath%"
|
||||
set "BACKUP_FILE=%BACKUP_DIR%\%date%-backup.ab"
|
||||
|
||||
rem Determine adb
|
||||
where /q adb
|
||||
IF ERRORLEVEL 1 (
|
||||
ECHO adb is missing. Ensure it is installed and placed in your PATH
|
||||
EXIT 1
|
||||
) ELSE (
|
||||
echo Extracting to %BACKUP_FILE%
|
||||
echo Backup might take a while and adb shows no progress bar
|
||||
echo !!!!!!
|
||||
echo Storage is not included. Backup manually.
|
||||
echo Some folders might be included if you provide the -shared parameter to adb, but not all.
|
||||
echo !!!!!!
|
||||
|
||||
rem POSSIBLE BACKUP ADB PARAMETERS
|
||||
rem -apk/-noapk: do/don't back up .apk files default -noapk
|
||||
rem -obb/-noobb: do/don't back up .obb files default -noobb
|
||||
rem -shared OR -noshared: do/don't back up shared storage default -noshared
|
||||
rem -all: back up all installed applications
|
||||
rem -system OR -nosystem: include system apps in -all default -system
|
||||
adb backup -apk -obb -noshared -all -system -f "%BACKUP_FILE%"
|
||||
|
||||
echo Finished
|
||||
)
|
||||
|
||||
PAUSE
|
16
KB/Linux/AMD.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
creation date: 2022-08-15
|
||||
tags: [note,amd,cpu,linux,cppc]
|
||||
---
|
||||
|
||||
# AMD
|
||||
|
||||
amd-pstate allows lower idle CPU frequencies. This is not default, let's enable it.
|
||||
|
||||
1. Set any CPPC setting to `enabled` in BIOS (if available, try without it might also work)
|
||||
2. Add `amd_pstate.shared_mem=1` as Kernel parameter
|
||||
3. Add `amd-pstate` by editing `/etc/modules-load.d/amd-pstate.conf` and inserting `amd_pstate` into the file
|
||||
4. Reboot
|
||||
5. Verify
|
||||
1. if you get low frequencies with `watch -n1 "grep \"^[c]pu MHz\" /proc/cpuinfo"`
|
||||
2. if you get the proper scaling driver with `/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver`
|
20
KB/Linux/DNS.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,dns,linux,archlinux,network]
|
||||
---
|
||||
|
||||
# DNS
|
||||
|
||||
0. Disable `systemd-resolved` if you want to use plain `resolv.conf`.
|
||||
1. Either use router's DNS: Restart machine to have and updates `resolv.conf` file.
|
||||
2. Use dedicated DNS, e.g. see [https://www.kuketz-blog.de/empfehlungsecke/#dns](https://www.kuketz-blog.de/empfehlungsecke/#dns) or your own.
|
||||
3. Edit `resolv.conf` by making it immutable afterwards: `sudo chattr -i /etc/resolv.conf; sudo nano /etc/resolv.conf; sudo chattr +i /etc/resolv.conf`
|
||||
|
||||
```shell
|
||||
options timeout:1
|
||||
options single-request
|
||||
# IPv4
|
||||
nameserver ...
|
||||
# IPv6
|
||||
nameserver .............
|
||||
```
|
40
KB/Linux/Desktop/Archinstall.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
creation date: 2022-09-03
|
||||
tags: [note,arch,linux,archlinux,install]
|
||||
---
|
||||
|
||||
# Archinstall
|
||||
|
||||
It has never been easier to install arch. Simply use the `archinstall` command!
|
||||
|
||||
* Make a bootable USB stick with `dd bs=4M if=path/to/archlinux-version-x86_64.iso of=/dev/sdx conv=fsync oflag=direct status=progress`
|
||||
* Type `archinstall` once booted into USB
|
||||
* Configure the system to your liking, here are some recommendations, but defaults should do it
|
||||
* Use btrfs and use recommended sub volumes layout
|
||||
* Use **encryption**
|
||||
* Use systemd-boot
|
||||
* Use NetworkManager for any desktop experience
|
||||
* Pick a default desktop environment for desktop experience, e.g. [[KB/Linux/GNOME]], [[KB/Linux/Desktop/KDE/KDE]], [[KB/Linux/Desktop/i3]] or [[KB/Linux/Desktop/sway]]
|
||||
|
||||
Recommended packages for first install
|
||||
|
||||
```plain
|
||||
htop fd ncdu dfc neofetch zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting nano nano-syntax-highlighting rsync vim reflector pacman-contrib kernel-modules-hook
|
||||
```
|
||||
|
||||
And from AUR later
|
||||
|
||||
```shell
|
||||
pacman-cleanup-hook
|
||||
yay-bin
|
||||
|
||||
# when using btrfs snapshots
|
||||
timeshift-bin
|
||||
```
|
||||
|
||||
When using _wayland_, ensure that you install
|
||||
|
||||
```shell
|
||||
qt5-wayland
|
||||
qt6-wayland
|
||||
```
|
150
KB/Linux/Desktop/Audio/EQ.md
Normal file
|
@ -0,0 +1,150 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,audio,pipewire,pulse,pulseaudio,linux,archlinux]
|
||||
---
|
||||
|
||||
# Audio - EQ
|
||||
|
||||
* See [[KB/Linux/Desktop/Audio/pipewire.txt]] for packages
|
||||
* See [[KB/Linux/Desktop/Audio/pulseaudio.txt]] for packages
|
||||
|
||||
This document outlines how to get a decent audio setup utilizing a headphone EQ called _dsp_. It's targeted for Linux machines, but use [EqualizerAPO](https://equalizerapo.com/) to similarly use headphones EQ presets.
|
||||
|
||||
See `HiFi 24bit and 192kHz Music Downloads are Very Silly Indeed` why not more than 44.1 kHz is needed. The following will not enforce 44.1kHz though.
|
||||
|
||||
## Why?
|
||||
A target curve T has been tested and be found most comfortable listening to. Try to get each Headphones with EQ settings near that curve T. [EQ presets for a lot of headphones](https://www.reddit.com/r/oratory1990/wiki/index/list_of_presets).
|
||||
|
||||
## How-to for Linux
|
||||
|
||||
Baseline for this is the [following website](https://forum.level1techs.com/t/improving-linux-audio-updated/134511).
|
||||
|
||||
### With PipeWire
|
||||
|
||||
Use `PulseEffects` presets for EQ settings and _enable auto-start_ of PulseEffects.
|
||||
|
||||
There are some very convenient settings you probably want to set.
|
||||
|
||||
* Handle suspend
|
||||
* In `/etc/pipewire/media-session.d/media-session.{conf|confpause}` comment out `suspend-node` to enable suspending feature
|
||||
* In `/etc/pipewire/media-session.d/alsa-monitor.conf` set a timeout so that your DAC/output device is able to always receive a signal if you like.
|
||||
|
||||
```sh
|
||||
node.pause-on-idle = false
|
||||
session.suspend-timeout-seconds = 0 # or any number as seconds
|
||||
```
|
||||
|
||||
* If you like, set a default _sample rate_ in `/etc/pipewire/pipewire.conf`, e.g. for 44.1kHz
|
||||
|
||||
```sh
|
||||
default.clock.rate = 44100
|
||||
```
|
||||
|
||||
* Use `systemctl --user restart pipewire-media-session.service pipewire.service pipewire-pulse.service` to restart PipeWire
|
||||
|
||||
### With PulseAudio
|
||||
|
||||
* Allow direct communication to device for PulseAudio. Edit ALSA configuration `/etc/asound.conf`.
|
||||
|
||||
```sh
|
||||
# Use PulseAudio plugin hw
|
||||
pcm.!default {
|
||||
type plug
|
||||
slave.pcm hw
|
||||
}
|
||||
```
|
||||
|
||||
* (**OPTIONAL, DO IF YOU WANT A REMAPPED VERSION OF MAIN AUDIO DEVICE IN sink_name=**) Add some _default_ sink names (remap them) in PulseAudio `/etc/pulse/default.pa`. Use `pacmd list-sinks` and `pacmd list-sources` to list your devices and insert as _master_ below. Any user could use `sink_main` and `src_microphone` instead of the specific device as `sink_name=`. This is **OPTIONAL** if you use direct sink name in any user specific file later instead of "sink_main" and "src_microphone"
|
||||
|
||||
```sh
|
||||
# create remapped sink/sources with proper names and description
|
||||
# pacmd list-sinks
|
||||
load-module module-remap-sink sink_name="sink_main" master="alsa_output.pci-0000_31_00.4.iec958-stereo" sink_properties=device.description="Toslink" remix=no
|
||||
# pacmd list-sources
|
||||
load-module module-remap-source source_name="src_microphone" master="alsa_input.usb-Samson_Technologies_Samson_Meteor_Mic-00.analog-stereo" source_properties=device.description="Microphone" remix=no
|
||||
```
|
||||
|
||||
* Adapt `.config/pulse/daemon.conf`
|
||||
|
||||
```sh
|
||||
flat-volumes = no
|
||||
|
||||
default-sample-channels = 2
|
||||
default-channel-map = front-left,front-right
|
||||
default-sample-format = s32ne
|
||||
;default-sample-rate = 44100
|
||||
;alternate-sample-rate = 44100
|
||||
;resample-method = speex-float-10
|
||||
|
||||
enable-lfe-remixing = no
|
||||
|
||||
high-priority = yes
|
||||
nice-level = -11
|
||||
realtime-scheduling = yes
|
||||
realtime-priority = 9
|
||||
rlimit-rtprio = 9
|
||||
```
|
||||
|
||||
#### EQ
|
||||
|
||||
Install [dsp](https://github.com/bmc0/dsp).
|
||||
|
||||
Create and adapt configuration for dsp. See example below. Use EQ presets for your headphones.
|
||||
|
||||
* Basic file structure
|
||||
|
||||
```sh
|
||||
.config/ladspa_dsp
|
||||
├── config_beyerdynamic_dt1990
|
||||
└── eq
|
||||
└── beyerdynamic_dt1990.conf
|
||||
```
|
||||
|
||||
* The main configuration for an additional Pulse sink `.config/ladspa_dsp/config_beyerdynamic_dt1990`
|
||||
```sh
|
||||
LC_NUMERIC=C
|
||||
effects_chain=@eq/beyerdynamic_dt1990.conf
|
||||
```
|
||||
|
||||
* The EQ settings derived from the target curve found for your headphones, e.g. `.config/ladspa_dsp/eq/beyerdynamic_dt1990.conf`
|
||||
|
||||
```sh
|
||||
# Beyerdynamic DT 1990
|
||||
# preamp gain
|
||||
gain -4.0
|
||||
|
||||
lowshelf 90 0.7q +4.0
|
||||
eq 220 0.7q -3.4
|
||||
...
|
||||
```
|
||||
|
||||
* Add a new sink _based on above remapped sink_main_ for the EQ present in `.config/pulse/default.pa` (also some other reasonable default settings)
|
||||
|
||||
```sh
|
||||
# load system defaults
|
||||
.include /etc/pulse/default.pa
|
||||
|
||||
# unload the cork stuff
|
||||
.nofail
|
||||
unload-module module-role-cork
|
||||
.fail
|
||||
|
||||
# unload the idle suspend stuff
|
||||
.nofail
|
||||
unload-module module-suspend-on-idle
|
||||
.fail
|
||||
|
||||
# dsp EQ stuff for various headphones
|
||||
.ifexists module-ladspa-sink.so
|
||||
.nofail
|
||||
load-module module-ladspa-sink sink_name=dsp_beyerdynamic_dt1990 sink_master="<MAIN SINK NAME> OR <sink_main from OPTIONAL STEP>" plugin=ladspa_dsp label=ladspa_dsp:beyerdynamic_dt1990 sink_properties=device.description="Beyerdynamic\ DT\ 1990\ Pro"
|
||||
.fail
|
||||
.endif
|
||||
```
|
||||
|
||||
* Restart PulseAudio, so that the new sink appears. In your settings, select the newly added DSP sink as default one. Maybe restart device.
|
||||
|
||||
#### Linux troubleshooting
|
||||
|
||||
* Something weird going on? Delete anything **except for configuration files** in `.config/pulse/`.
|
||||
* Restarting when changing anything in PulseAudio configuration is highly recommended as some applications might not be able to handle restarting audio system.
|
14
KB/Linux/Desktop/Audio/aptx and pulseaudio.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,aptx,pulseaudio,bluetooth]
|
||||
---
|
||||
|
||||
# aptx and pulseaudio
|
||||
|
||||
Inspect BT packages:
|
||||
|
||||
* Install [bluez-utils-compat](https://aur.archlinux.org/packages/bluez-utils-compat/)
|
||||
* Run `sudo hcidump avdt` and connect device
|
||||
* See if `SBC` or `aptX` is used
|
||||
|
||||
See if there's a difference when installing the [pulseaudio-modules-bt-git](https://aur.archlinux.org/packages/pulseaudio-modules-bt-git/) package. After installing you need to restart _pulseaudio_ with e.g. `systemctl --user stop pulseaudio.service`.
|
12
KB/Linux/Desktop/Audio/pipewire.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
gst-plugin-pipewire
|
||||
lib32-libpulse
|
||||
libcanberra-pulse
|
||||
libpipewire02
|
||||
libpulse
|
||||
pipewire
|
||||
pipewire-alsa
|
||||
pipewire-docs
|
||||
pipewire-media-session
|
||||
pipewire-pulse
|
||||
pipewire-pulse
|
||||
easyeffects
|
8
KB/Linux/Desktop/Audio/pulseaudio.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
paprefs
|
||||
pavucontrol
|
||||
pulseaudio
|
||||
pulseaudio-alsa
|
||||
pulseaudio-bluetooth
|
||||
pulseaudio-equalizer
|
||||
pulseaudio-rtp
|
||||
pulseaudio-zeroconf
|
44
KB/Linux/Desktop/Fonts.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,fonts]
|
||||
---
|
||||
|
||||
# Fonts
|
||||
|
||||
Probably you want the following installed:
|
||||
|
||||
```shell
|
||||
yay -S \
|
||||
adobe-source-code-pro-fonts \
|
||||
awesome-terminal-fonts \
|
||||
cantarell-fonts \
|
||||
noto-fonts \
|
||||
noto-fonts-emoji \
|
||||
noto-fonts-cjk \
|
||||
noto-fonts-extra \
|
||||
terminus-font \
|
||||
ttf-cascadia-code \
|
||||
ttf-dejavu \
|
||||
ttf-font-awesome \
|
||||
ttf-font-icons \
|
||||
ttf-liberation \
|
||||
ttf-opensans \
|
||||
terminus-font
|
||||
```
|
||||
|
||||
## Console
|
||||
|
||||
Install `yay -S terminus-font` if not already done above.
|
||||
|
||||
Edit `/etc/vconsole.conf`, but depending on your output resolution you might want to have different sizes, e.g. `v16n` for `1080p`, `v22n` for `1440p` and `v32n` for 4K although `v22n` will mostly do for Full HD and WQHD.
|
||||
|
||||
```properties
|
||||
KEYMAP=de-latin1-nodeadkeys
|
||||
FONT=ter-v22n
|
||||
```
|
||||
|
||||
To make it available early, add `consolefont` into your `HOOKS=(... consolefont)` of `/etc/mkinitcpio.conf`.
|
||||
|
||||
## See Theming of Qt and Gtk
|
||||
|
||||
See [[KB/Linux/Desktop/Theming Qt and Gtk]] and allow _Clear Type_ in [[KB/Linux/Desktop/Tweaks]].
|
61
KB/Linux/Desktop/GPG - PGP.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
creation date: 2022-01-12
|
||||
tags: [note,linux,gpg,pgp]
|
||||
---
|
||||
|
||||
# GPG
|
||||
|
||||
## Creation
|
||||
**Really, set up an expiration date, otherwise you'll end up with non-revokable keys!**
|
||||
|
||||
Or you do need the `revoke@example` trick which is ugly and not really revoking a key.
|
||||
|
||||
Generate at least 3072 bit key with an expiration date, e.g. with Seahorse or `gpg` command line tool.
|
||||
|
||||
## Distribution
|
||||
|
||||
* Use https://keys.openpgp.org (`hkps://keys.openpgp.org`) because of address validation
|
||||
* SKS Pool is widely used (`hkp://eu.pool.sks-keyservers.net`) and pool syncs automatically
|
||||
* https://pgp.mit.edu slow but has a lot of keys
|
||||
|
||||
## gpg.conf
|
||||
|
||||
```
|
||||
keyserver hkp://keys.gnupg.net
|
||||
keyserver hkps://keys.openpgp.org
|
||||
keyserver hkp://pool.sks-keyservers.net:11371
|
||||
keyserver hkp://pgp.mit.edu:11371
|
||||
```
|
||||
|
||||
## Seahorse for GNOME
|
||||
|
||||
Search and edit with dconf `.../keyserver`:
|
||||
|
||||
```
|
||||
['hkp://keys.gnupg.net', 'hkps://keys.openpgp.org', 'hkp://pool.sks-keyservers.net:11371', 'hkp://pgp.mit.edu:11371']
|
||||
```
|
||||
|
||||
## Export/Revoke
|
||||
|
||||
```
|
||||
export MY_GPG_ID=theID
|
||||
gpg --armor --output public-key.gpg --export $MY_GPG_ID
|
||||
gpg --armor --output private-key.gpg --export-secret-keys $MY_GPG_ID
|
||||
gpg --output revocation-certificate.asc --gen-revoke $MY_GPG_ID
|
||||
|
||||
# optionally revoke with generated cert
|
||||
# - import public key first
|
||||
# - revoke
|
||||
# - sync with keyserver of your choice
|
||||
|
||||
# gpg --import public-key.gpg
|
||||
gpg --import revocation-certificate.asc
|
||||
```
|
||||
|
||||
## pinentry
|
||||
|
||||
Edit your `gpg-agent.conf` and for a modernized look of pinentry add
|
||||
|
||||
```shell
|
||||
pinentry-program /usr/bin/pinentry-gnome3
|
||||
```
|
After Width: | Height: | Size: 259 KiB |
After Width: | Height: | Size: 239 KiB |
After Width: | Height: | Size: 230 KiB |
After Width: | Height: | Size: 314 KiB |
After Width: | Height: | Size: 198 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 179 KiB |
After Width: | Height: | Size: 193 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 197 KiB |
After Width: | Height: | Size: 320 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 173 KiB |
After Width: | Height: | Size: 277 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 178 KiB |
10
KB/Linux/Desktop/KDE/KDE Tiling.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,kde,archlinux,wm,tiling]
|
||||
---
|
||||
|
||||
# Config Tiling
|
||||
|
||||
* Install Krohnkite and visit the GitHub page to enable settings
|
||||
* Set proper shortcuts using suffix `(tiling)`
|
||||
* See hints at [https://github-wiki-see.page/m/esjeon/krohnkite/wiki/Tips](https://github-wiki-see.page/m/esjeon/krohnkite/wiki/Tips)
|
61
KB/Linux/Desktop/KDE/KDE.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,kde,linux,archlinux]
|
||||
---
|
||||
|
||||
# KDE
|
||||
|
||||
A guide how to setup KDE similar to GNOME experience.
|
||||
|
||||
* Install packages `plasma` (all and maybe uninstall `discover` later)
|
||||
* Install some apps: `partitionmanager ark gwenview okular kcalc kdiff3`
|
||||
* Install `latte-dock` for a reasonable dock
|
||||
* (**optional**) For KDE's Software Center (Discover), install backends `packagekit-qt5`
|
||||
* Adapt styles
|
||||
* Adapt Font Settings according to screenshot
|
||||
* Use `Breeze Twilight` as global theme
|
||||
* Adapt GTK style to also use `Breeze`
|
||||
* Maybe qdbus is slow when shutting down, use `/desktop/` files and drag to desktop from a location, then add as Widget and move to top panel
|
||||
* Import keybindings from files
|
||||
* (**optional**) Firefox KDE: https://wiki.archlinux.org/index.php/Firefox#KDE_integration
|
||||
* Install `xdg-desktop-portal xdg-desktop-portal-kde`
|
||||
* Different uses of _meta_ key
|
||||
* Native _"show all"_ windows
|
||||
|
||||
```sh
|
||||
kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta "org.kde.kglobalaccel,/component/kwin,org.kde.kglobalaccel.Component,invokeShortcut,ExposeAll";
|
||||
qdbus org.kde.KWin /KWin reconfigure;
|
||||
```
|
||||
|
||||
* Native _"show current workspace"_ windows
|
||||
|
||||
```sh
|
||||
kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta "org.kde.kglobalaccel,/component/kwin,org.kde.kglobalaccel.Component,invokeShortcut,Expose";
|
||||
qdbus org.kde.KWin /KWin reconfigure;
|
||||
```
|
||||
|
||||
* kwin script _Parachute_ to simulate behavior which requires https://github.com/tcorreabr/Parachute (via _AUR_)
|
||||
|
||||
```sh
|
||||
kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta "org.kde.kglobalaccel,/component/kwin,org.kde.kglobalaccel.Component,invokeShortcut,Parachute";
|
||||
qdbus org.kde.KWin /KWin reconfigure;
|
||||
```
|
||||
* Set default applications (e.g. Terminal)
|
||||
* Use systemd start instead of boot scripts: `kwriteconfig5 --file startkderc --group General --key systemdBoot true`
|
||||
* Maybe sync the following configuration files to track changes
|
||||
|
||||
```sh
|
||||
.config/kdeglobals
|
||||
.config/kglobalshortcutsrc
|
||||
.config/khotkeysrc
|
||||
.config/krunnerrc
|
||||
.config/kwinrc
|
||||
.config/kwinrulesrc
|
||||
.config/kwalletrc
|
||||
.config/dolphinrc
|
||||
.config/latte
|
||||
.config/lattedockrc
|
||||
.config/syncthingtray.ini
|
||||
.config/rsibreakrc
|
||||
.config/plasma-localerc
|
||||
```
|
440
KB/Linux/Desktop/KDE/configs/2021-04-30 Default shortcuts.kksrc
Normal file
|
@ -0,0 +1,440 @@
|
|||
[ActivityManager][Global Shortcuts]
|
||||
switch-to-activity-2c0b1901-ae5a-42d9-91de-14a52141f058=
|
||||
|
||||
[KDE Keyboard Layout Switcher][Global Shortcuts]
|
||||
Switch keyboard layout to German=
|
||||
Switch to Next Keyboard Layout=
|
||||
|
||||
[StandardShortcuts]
|
||||
AboutApp=
|
||||
AboutKDE=
|
||||
Activate Next Tab=Ctrl+PgDown; Ctrl+]
|
||||
Activate Previous Tab=Ctrl+PgUp; Ctrl+[
|
||||
ActualSize=Ctrl+0
|
||||
AddBookmark=Ctrl+B
|
||||
Back=Alt+Left; Back
|
||||
BackwardWord=Ctrl+Left
|
||||
Begin=Ctrl+Home
|
||||
BeginningOfLine=Home
|
||||
Clear=
|
||||
Close=Ctrl+W; Ctrl+Esc
|
||||
ConfigureNotifications=
|
||||
ConfigureToolbars=
|
||||
Copy=Ctrl+Ins; Ctrl+C
|
||||
CreateFolder=F10
|
||||
Cut=Ctrl+X; Shift+Del
|
||||
DeleteFile=Shift+Del
|
||||
DeleteWordBack=Ctrl+Backspace
|
||||
DeleteWordForward=Ctrl+Del
|
||||
Deselect=Ctrl+Shift+A
|
||||
DocumentBack=Alt+Shift+Left
|
||||
DocumentForward=Alt+Shift+Right
|
||||
Donate=
|
||||
EditBookmarks=
|
||||
End=Ctrl+End
|
||||
EndOfLine=End
|
||||
Find=Ctrl+F
|
||||
FindNext=F3
|
||||
FindPrev=Shift+F3
|
||||
FitToHeight=
|
||||
FitToPage=
|
||||
FitToWidth=
|
||||
Forward=Forward; Alt+Right
|
||||
ForwardWord=Ctrl+Right
|
||||
FullScreen=Ctrl+Shift+F
|
||||
Goto=
|
||||
GotoLine=Ctrl+G
|
||||
GotoPage=
|
||||
Help=F1
|
||||
Home=Home Page; Alt+Home
|
||||
KeyBindings=
|
||||
Mail=
|
||||
MoveToTrash=Del
|
||||
New=Ctrl+N
|
||||
Next=PgDown
|
||||
NextCompletion=Ctrl+Down
|
||||
Open=Ctrl+O
|
||||
OpenRecent=
|
||||
Paste=Shift+Ins; Ctrl+V
|
||||
Paste Selection=Ctrl+Shift+Ins
|
||||
Preferences=Ctrl+Shift+,
|
||||
PrevCompletion=Ctrl+Up
|
||||
Print=Ctrl+P
|
||||
PrintPreview=
|
||||
Prior=PgUp
|
||||
Quit=Ctrl+Q
|
||||
Redo=Ctrl+Shift+Z
|
||||
Reload=F5; Refresh
|
||||
RenameFile=F2
|
||||
Replace=Ctrl+R
|
||||
ReportBug=
|
||||
Revert=
|
||||
RotateDown=Down
|
||||
RotateUp=Up
|
||||
Save=Ctrl+S
|
||||
SaveAs=Ctrl+Shift+S
|
||||
SaveOptions=
|
||||
SelectAll=Ctrl+A
|
||||
ShowHideHiddenFiles=Alt+.; Ctrl+H
|
||||
ShowMenubar=Ctrl+M
|
||||
ShowStatusbar=
|
||||
ShowToolbar=
|
||||
Spelling=
|
||||
SubstringCompletion=Ctrl+T
|
||||
SwitchApplicationLanguage=
|
||||
TextCompletion=Ctrl+E
|
||||
TipofDay=
|
||||
Undo=Ctrl+Z
|
||||
Up=Alt+Up
|
||||
WhatsThis=Shift+F1
|
||||
Zoom=
|
||||
ZoomIn=Ctrl+=; Ctrl++
|
||||
ZoomOut=Ctrl+-
|
||||
|
||||
[kaccess][Global Shortcuts]
|
||||
Toggle Screen Reader On and Off=Meta+Alt+S
|
||||
|
||||
[kcm_touchpad][Global Shortcuts]
|
||||
Disable Touchpad=Touchpad Off
|
||||
Enable Touchpad=Touchpad On
|
||||
Toggle Touchpad=Touchpad Toggle
|
||||
|
||||
[kded5][Global Shortcuts]
|
||||
Show System Activity=Ctrl+Esc
|
||||
display=Meta+P; Display
|
||||
|
||||
[khotkeys][Global Shortcuts]
|
||||
{3b363184-3371-4f75-a592-cabb0b12d8c9}=Meta+B
|
||||
{48f1028b-3c55-42ad-be1e-c42f041740c5}=
|
||||
{684b92a3-64fa-46e0-90e7-d4d319118ef5}=Meta+F4
|
||||
{7947b386-8c64-4402-b960-1fd4982fcc5f}=Meta+R
|
||||
{7ad2cd8f-33d8-466b-8f2e-a07990160789}=Ctrl+Alt+Del
|
||||
{ac637bb6-d79a-4fc3-a8f2-26ee97e0473f}=
|
||||
{b4173688-ff63-4244-a539-7da51f47da71}=Meta+F2
|
||||
{b41e0921-f940-4b23-acef-d7c8960278c7}=Ctrl+Alt+K
|
||||
{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=
|
||||
{d438a876-53ac-43c9-9bf6-fb814bd5ea7e}=Meta+F3
|
||||
|
||||
[kmix][Global Shortcuts]
|
||||
decrease_microphone_volume=Microphone Volume Down
|
||||
decrease_volume=Volume Down
|
||||
increase_microphone_volume=Microphone Volume Up
|
||||
increase_volume=Volume Up
|
||||
mic_mute=Microphone Mute
|
||||
mute=Volume Mute
|
||||
|
||||
[krunner.desktop][Global Shortcuts]
|
||||
RunClipboard=
|
||||
_launch=Alt+F2; Meta+Space; Alt+Space
|
||||
|
||||
[ksmserver][Global Shortcuts]
|
||||
Halt Without Confirmation=Ctrl+Alt+Shift+PgDown
|
||||
Lock Session=Screensaver; Meta+L
|
||||
Log Out=
|
||||
Log Out Without Confirmation=Ctrl+Alt+Shift+Del
|
||||
Reboot Without Confirmation=Ctrl+Alt+Shift+PgUp
|
||||
|
||||
[kwin][Global Shortcuts]
|
||||
Activate Window Demanding Attention=Ctrl+Alt+A
|
||||
Decrease Opacity=
|
||||
Expose=Ctrl+F9
|
||||
ExposeAll=Ctrl+F10; Launch (C)
|
||||
ExposeClass=Ctrl+F7
|
||||
FlipSwitchAll=
|
||||
FlipSwitchCurrent=
|
||||
Increase Opacity=
|
||||
Invert Screen Colors=
|
||||
Kill Window=Ctrl+Alt+Esc
|
||||
Krohnkite: Cycle Layout=
|
||||
Krohnkite: Decrease=
|
||||
Krohnkite: Down/Next=
|
||||
Krohnkite: Float=
|
||||
Krohnkite: Float All=
|
||||
Krohnkite: Floating Layout=
|
||||
Krohnkite: Grow Height=
|
||||
Krohnkite: Grow Width=
|
||||
Krohnkite: Increase=
|
||||
Krohnkite: Left=
|
||||
Krohnkite: Monocle Layout=
|
||||
Krohnkite: Move Down/Next=
|
||||
Krohnkite: Move Left=
|
||||
Krohnkite: Move Right=
|
||||
Krohnkite: Move Up/Prev=
|
||||
Krohnkite: Next Layout=
|
||||
Krohnkite: Previous Layout=
|
||||
Krohnkite: Quarter Layout=
|
||||
Krohnkite: Right=
|
||||
Krohnkite: Rotate=
|
||||
Krohnkite: Rotate Part=
|
||||
Krohnkite: Set master=
|
||||
Krohnkite: Shrink Height=
|
||||
Krohnkite: Shrink Width=
|
||||
Krohnkite: Spread Layout=
|
||||
Krohnkite: Stair Layout=
|
||||
Krohnkite: Three Column Layout=
|
||||
Krohnkite: Tile Layout=
|
||||
Krohnkite: Up/Prev=
|
||||
MoveMouseToCenter=Meta+F6
|
||||
MoveMouseToFocus=Meta+F5
|
||||
MoveZoomDown=
|
||||
MoveZoomLeft=
|
||||
MoveZoomRight=
|
||||
MoveZoomUp=
|
||||
Parachute=
|
||||
Setup Window Shortcut=
|
||||
Show Desktop=
|
||||
ShowDesktopGrid=Meta+S
|
||||
Suspend Compositing=
|
||||
Switch One Desktop Down=
|
||||
Switch One Desktop Up=
|
||||
Switch One Desktop to the Left=Meta+PgUp
|
||||
Switch One Desktop to the Right=Meta+PgDown
|
||||
Switch Window Down=Meta+Alt+Down
|
||||
Switch Window Left=Meta+Alt+Left
|
||||
Switch Window Right=Meta+Alt+Right
|
||||
Switch Window Up=Meta+Alt+Up
|
||||
Switch to Desktop 1=
|
||||
Switch to Desktop 10=
|
||||
Switch to Desktop 11=
|
||||
Switch to Desktop 12=
|
||||
Switch to Desktop 13=
|
||||
Switch to Desktop 14=
|
||||
Switch to Desktop 15=
|
||||
Switch to Desktop 16=
|
||||
Switch to Desktop 17=
|
||||
Switch to Desktop 18=
|
||||
Switch to Desktop 19=
|
||||
Switch to Desktop 2=
|
||||
Switch to Desktop 20=
|
||||
Switch to Desktop 3=
|
||||
Switch to Desktop 4=
|
||||
Switch to Desktop 5=
|
||||
Switch to Desktop 6=
|
||||
Switch to Desktop 7=
|
||||
Switch to Desktop 8=
|
||||
Switch to Desktop 9=
|
||||
Switch to Next Desktop=
|
||||
Switch to Next Screen=
|
||||
Switch to Previous Desktop=
|
||||
Switch to Previous Screen=
|
||||
Switch to Screen 0=
|
||||
Switch to Screen 1=
|
||||
Switch to Screen 2=
|
||||
Switch to Screen 3=
|
||||
Switch to Screen 4=
|
||||
Switch to Screen 5=
|
||||
Switch to Screen 6=
|
||||
Switch to Screen 7=
|
||||
Toggle Night Color=
|
||||
Toggle Window Raise/Lower=
|
||||
Walk Through Desktop List=
|
||||
Walk Through Desktop List (Reverse)=
|
||||
Walk Through Desktops=
|
||||
Walk Through Desktops (Reverse)=
|
||||
Walk Through Windows=Alt+Tab
|
||||
Walk Through Windows (Reverse)=Alt+Shift+Backtab
|
||||
Walk Through Windows Alternative=
|
||||
Walk Through Windows Alternative (Reverse)=
|
||||
Walk Through Windows of Current Application=Alt+`
|
||||
Walk Through Windows of Current Application (Reverse)=Alt+~
|
||||
Walk Through Windows of Current Application Alternative=
|
||||
Walk Through Windows of Current Application Alternative (Reverse)=
|
||||
Window Above Other Windows=
|
||||
Window Below Other Windows=
|
||||
Window Close=Alt+F4
|
||||
Window Fullscreen=
|
||||
Window Grow Horizontal=
|
||||
Window Grow Vertical=
|
||||
Window Lower=
|
||||
Window Maximize=Meta+Up
|
||||
Window Maximize Horizontal=
|
||||
Window Maximize Vertical=
|
||||
Window Minimize=
|
||||
Window Move=
|
||||
Window No Border=
|
||||
Window On All Desktops=
|
||||
Window One Desktop Down=
|
||||
Window One Desktop Up=
|
||||
Window One Desktop to the Left=Meta+Shift+Home; Meta+Shift+PgUp
|
||||
Window One Desktop to the Right=Meta+Shift+PgDown; Meta+Shift+End
|
||||
Window Operations Menu=
|
||||
Window Pack Down=
|
||||
Window Pack Left=
|
||||
Window Pack Right=
|
||||
Window Pack Up=
|
||||
Window Quick Tile Bottom=Meta+Down
|
||||
Window Quick Tile Bottom Left=
|
||||
Window Quick Tile Bottom Right=
|
||||
Window Quick Tile Left=Meta+Left
|
||||
Window Quick Tile Right=Meta+Right
|
||||
Window Quick Tile Top=
|
||||
Window Quick Tile Top Left=
|
||||
Window Quick Tile Top Right=
|
||||
Window Raise=
|
||||
Window Resize=
|
||||
Window Shade=
|
||||
Window Shrink Horizontal=
|
||||
Window Shrink Vertical=
|
||||
Window to Desktop 1=
|
||||
Window to Desktop 10=
|
||||
Window to Desktop 11=
|
||||
Window to Desktop 12=
|
||||
Window to Desktop 13=
|
||||
Window to Desktop 14=
|
||||
Window to Desktop 15=
|
||||
Window to Desktop 16=
|
||||
Window to Desktop 17=
|
||||
Window to Desktop 18=
|
||||
Window to Desktop 19=
|
||||
Window to Desktop 2=
|
||||
Window to Desktop 20=
|
||||
Window to Desktop 3=
|
||||
Window to Desktop 4=
|
||||
Window to Desktop 5=
|
||||
Window to Desktop 6=
|
||||
Window to Desktop 7=
|
||||
Window to Desktop 8=
|
||||
Window to Desktop 9=
|
||||
Window to Next Desktop=
|
||||
Window to Next Screen=Meta+Shift+Right
|
||||
Window to Previous Desktop=
|
||||
Window to Previous Screen=Meta+Shift+Left
|
||||
Window to Screen 0=
|
||||
Window to Screen 1=
|
||||
Window to Screen 2=
|
||||
Window to Screen 3=
|
||||
Window to Screen 4=
|
||||
Window to Screen 5=
|
||||
Window to Screen 6=
|
||||
Window to Screen 7=
|
||||
WindowGeometry=Ctrl+Shift+F11
|
||||
view_actual_size=Meta+0
|
||||
view_zoom_in=Meta+=
|
||||
view_zoom_out=Meta+-
|
||||
|
||||
[lattedock][Global Shortcuts]
|
||||
activate entry 1=
|
||||
activate entry 10=
|
||||
activate entry 11=
|
||||
activate entry 12=
|
||||
activate entry 13=
|
||||
activate entry 14=
|
||||
activate entry 15=
|
||||
activate entry 16=
|
||||
activate entry 17=
|
||||
activate entry 18=
|
||||
activate entry 19=
|
||||
activate entry 2=
|
||||
activate entry 3=
|
||||
activate entry 4=
|
||||
activate entry 5=
|
||||
activate entry 6=
|
||||
activate entry 7=
|
||||
activate entry 8=
|
||||
activate entry 9=
|
||||
clear-history=
|
||||
clipboard_action=
|
||||
cycleNextAction=
|
||||
cyclePrevAction=
|
||||
edit_clipboard=
|
||||
new instance for entry 1=
|
||||
new instance for entry 10=
|
||||
new instance for entry 11=
|
||||
new instance for entry 12=
|
||||
new instance for entry 13=
|
||||
new instance for entry 14=
|
||||
new instance for entry 15=
|
||||
new instance for entry 16=
|
||||
new instance for entry 17=
|
||||
new instance for entry 18=
|
||||
new instance for entry 19=
|
||||
new instance for entry 2=
|
||||
new instance for entry 3=
|
||||
new instance for entry 4=
|
||||
new instance for entry 5=
|
||||
new instance for entry 6=
|
||||
new instance for entry 7=
|
||||
new instance for entry 8=
|
||||
new instance for entry 9=
|
||||
repeat_action=
|
||||
show latte global settings=
|
||||
show latte view=
|
||||
show view settings=
|
||||
show-barcode=
|
||||
show-on-mouse-pos=
|
||||
|
||||
[mediacontrol][Global Shortcuts]
|
||||
mediavolumedown=
|
||||
mediavolumeup=
|
||||
nextmedia=Media Next
|
||||
pausemedia=Media Pause
|
||||
playmedia=
|
||||
playpausemedia=Media Play
|
||||
previousmedia=Media Previous
|
||||
stopmedia=Media Stop
|
||||
|
||||
[org.kde.dolphin.desktop][Global Shortcuts]
|
||||
_launch=Meta+E
|
||||
|
||||
[org.kde.plasma.emojier.desktop][Global Shortcuts]
|
||||
_launch=Meta+.
|
||||
|
||||
[org.kde.spectacle.desktop][Global Shortcuts]
|
||||
ActiveWindowScreenShot=
|
||||
CurrentMonitorScreenShot=
|
||||
FullScreenScreenShot=
|
||||
RectangularRegionScreenShot=Print
|
||||
_launch=
|
||||
|
||||
[org_kde_powerdevil][Global Shortcuts]
|
||||
Decrease Keyboard Brightness=Keyboard Brightness Down
|
||||
Decrease Screen Brightness=Monitor Brightness Down
|
||||
Hibernate=Hibernate
|
||||
Increase Keyboard Brightness=Keyboard Brightness Up
|
||||
Increase Screen Brightness=Monitor Brightness Up
|
||||
PowerDown=Power Down
|
||||
PowerOff=Power Off
|
||||
Sleep=Sleep
|
||||
Toggle Keyboard Backlight=Keyboard Light On/Off
|
||||
Turn Off Screen=
|
||||
|
||||
[plasmashell][Global Shortcuts]
|
||||
activate task manager entry 1=Meta+1
|
||||
activate task manager entry 10=
|
||||
activate task manager entry 2=Meta+2
|
||||
activate task manager entry 3=Meta+3
|
||||
activate task manager entry 4=Meta+4
|
||||
activate task manager entry 5=Meta+5
|
||||
activate task manager entry 6=Meta+6
|
||||
activate task manager entry 7=Meta+7
|
||||
activate task manager entry 8=Meta+8
|
||||
activate task manager entry 9=Meta+9
|
||||
activate widget 12=Meta+V
|
||||
activate widget 25=
|
||||
activate widget 27=
|
||||
activate widget 28=
|
||||
activate widget 4=Alt+F1
|
||||
clear-history=Ctrl+Alt+Shift+C
|
||||
clipboard_action=Ctrl+Alt+X
|
||||
cycleNextAction=
|
||||
cyclePrevAction=
|
||||
edit_clipboard=
|
||||
manage activities=Meta+Q
|
||||
next activity=
|
||||
previous activity=
|
||||
repeat_action=Ctrl+Alt+R
|
||||
show dashboard=
|
||||
show-barcode=
|
||||
show-on-mouse-pos=
|
||||
stop current activity=
|
||||
switch to next activity=
|
||||
switch to previous activity=
|
||||
toggle do not disturb=
|
||||
|
||||
[systemsettings.desktop][Global Shortcuts]
|
||||
_launch=Tools
|
||||
kcm-kscreen=
|
||||
kcm-lookandfeel=
|
||||
kcm-users=
|
||||
powerdevilprofilesconfig=
|
||||
screenlocker=
|
200
KB/Linux/Desktop/KDE/configs/2021-04-30 My Custom Binds.khotkeys
Normal file
|
@ -0,0 +1,200 @@
|
|||
[Data]
|
||||
DataCount=1
|
||||
|
||||
[Data_1]
|
||||
Comment=Comment
|
||||
DataCount=7
|
||||
Enabled=true
|
||||
Name=My Custom Binds
|
||||
SystemGroup=0
|
||||
Type=ACTION_DATA_GROUP
|
||||
|
||||
[Data_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_1]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Termite
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_1Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_1Actions0]
|
||||
CommandURL=termite
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_1Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_1Triggers0]
|
||||
Key=Meta+R
|
||||
Type=SHORTCUT
|
||||
Uuid={7947b386-8c64-4402-b960-1fd4982fcc5f}
|
||||
|
||||
[Data_1_2]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Systemmonitor htop
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2Actions0]
|
||||
CommandURL=termite --title="htop" --name="htop" --class="termite" -e "htop"
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_2Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2Triggers0]
|
||||
Key=
|
||||
Type=SHORTCUT
|
||||
Uuid={7ad2cd8f-33d8-466b-8f2e-a07990160789}
|
||||
|
||||
[Data_1_3]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Systemmonitor plasma-systemmonitor
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3Actions0]
|
||||
CommandURL=plasma-systemmonitor
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3Triggers0]
|
||||
Key=Ctrl+Alt+Del
|
||||
Type=SHORTCUT
|
||||
Uuid={c1b5a969-9ec6-4258-8bff-b65e25000dfd}
|
||||
|
||||
[Data_1_4]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Weechat
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_4Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_4Actions0]
|
||||
CommandURL=termite --title="WeeChat" --name="WeeChat" --class="WeeChat" -e "sh /home/alexander/.bin/weechat"
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_4Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_4Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_4Triggers0]
|
||||
Key=Meta+F3
|
||||
Type=SHORTCUT
|
||||
Uuid={d438a876-53ac-43c9-9bf6-fb814bd5ea7e}
|
||||
|
||||
[Data_1_5]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Clerk
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_5Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_5Actions0]
|
||||
CommandURL=termite --title="Clerk" --name="Clerk" --class="termite" -e "clerk"
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_5Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_5Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_5Triggers0]
|
||||
Key=Meta+F2
|
||||
Type=SHORTCUT
|
||||
Uuid={b4173688-ff63-4244-a539-7da51f47da71}
|
||||
|
||||
[Data_1_6]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=KeepassXC
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_6Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_6Actions0]
|
||||
CommandURL=keepassxc
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_6Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_6Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_6Triggers0]
|
||||
Key=Ctrl+Alt+K
|
||||
Type=SHORTCUT
|
||||
Uuid={b41e0921-f940-4b23-acef-d7c8960278c7}
|
||||
|
||||
[Data_1_7]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Browser
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_7Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_7Actions0]
|
||||
CommandURL=firefox
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_7Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_7Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_7Triggers0]
|
||||
Key=Meta+B
|
||||
Type=SHORTCUT
|
||||
Uuid={3b363184-3371-4f75-a592-cabb0b12d8c9}
|
||||
|
||||
[Main]
|
||||
AllowMerge=false
|
||||
Version=2
|
|
@ -0,0 +1,704 @@
|
|||
[Data]
|
||||
DataCount=1
|
||||
|
||||
[Data_1]
|
||||
Comment=should never see
|
||||
DataCount=3
|
||||
Enabled=true
|
||||
Name=should never see
|
||||
SystemGroup=2
|
||||
Type=ACTION_DATA_GROUP
|
||||
|
||||
[Data_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_1]
|
||||
Comment=KMenuEdit Global Shortcuts
|
||||
DataCount=1
|
||||
Enabled=false
|
||||
Name=KMenuEdit
|
||||
SystemGroup=1
|
||||
Type=ACTION_DATA_GROUP
|
||||
|
||||
[Data_1_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_1_1]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Search
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_1_1Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_1_1Actions0]
|
||||
CommandURL=http://google.com
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_1_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_1_1Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_1_1Triggers0]
|
||||
Key=
|
||||
Type=SHORTCUT
|
||||
Uuid={d03619b6-9b3c-48cc-9d9c-a2aadb485550}
|
||||
|
||||
[Data_1_2]
|
||||
Comment=Basic Konqueror gestures.
|
||||
DataCount=14
|
||||
Enabled=false
|
||||
Name=Konqueror Gestures
|
||||
SystemGroup=0
|
||||
Type=ACTION_DATA_GROUP
|
||||
|
||||
[Data_1_2Conditions]
|
||||
Comment=Konqueror window
|
||||
ConditionsCount=1
|
||||
|
||||
[Data_1_2Conditions0]
|
||||
Type=ACTIVE_WINDOW
|
||||
|
||||
[Data_1_2Conditions0Window]
|
||||
Comment=Konqueror
|
||||
WindowsCount=1
|
||||
|
||||
[Data_1_2Conditions0Window0]
|
||||
Class=^konqueror\s
|
||||
ClassType=3
|
||||
Comment=Konqueror
|
||||
Role=konqueror-mainwindow#1
|
||||
RoleType=0
|
||||
Title=file:/ - Konqueror
|
||||
TitleType=0
|
||||
Type=SIMPLE
|
||||
WindowTypes=1
|
||||
|
||||
[Data_1_2_1]
|
||||
Comment=Press, move left, release.
|
||||
Enabled=true
|
||||
Name=Back
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_10]
|
||||
Comment=Opera-style: Press, move up, release.\nNOTE: Conflicts with 'New Tab', and as such is disabled by default.
|
||||
Enabled=false
|
||||
Name=Stop Loading
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_10Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_10Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Escape\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_10Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_10Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_10Triggers0]
|
||||
GesturePointData=0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_11]
|
||||
Comment=Going up in URL/directory structure.\nMozilla-style: Press, move up, move left, move up, release.
|
||||
Enabled=true
|
||||
Name=Up
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_11Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_11Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Alt+Up
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_11Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_11Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_11Triggers0]
|
||||
GesturePointData=0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,1,1,0.5,0.3125,0.0625,1,0.875,0.5,0.375,0.0625,1,0.75,0.5,0.4375,0.0625,1,0.625,0.5,0.5,0.0625,1,0.5,0.5,0.5625,0.0625,1,0.375,0.5,0.625,0.0625,1,0.25,0.5,0.6875,0.0625,1,0.125,0.5,0.75,0.0625,-0.5,0,0.5,0.8125,0.0625,-0.5,0,0.375,0.875,0.0625,-0.5,0,0.25,0.9375,0.0625,-0.5,0,0.125,1,0,0,0,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_12]
|
||||
Comment=Going up in URL/directory structure.\nOpera-style: Press, move up, move left, move up, release.\nNOTE: Conflicts with "Activate Previous Tab", and as such is disabled by default.
|
||||
Enabled=false
|
||||
Name=Up #2
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_12Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_12Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Alt+Up\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_12Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_12Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_12Triggers0]
|
||||
GesturePointData=0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_13]
|
||||
Comment=Press, move up, move right, release.
|
||||
Enabled=true
|
||||
Name=Activate Next Tab
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_13Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_13Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+.\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_13Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_13Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_13Triggers0]
|
||||
GesturePointData=0,0.0625,-0.5,0,1,0.0625,0.0625,-0.5,0,0.875,0.125,0.0625,-0.5,0,0.75,0.1875,0.0625,-0.5,0,0.625,0.25,0.0625,-0.5,0,0.5,0.3125,0.0625,-0.5,0,0.375,0.375,0.0625,-0.5,0,0.25,0.4375,0.0625,-0.5,0,0.125,0.5,0.0625,0,0,0,0.5625,0.0625,0,0.125,0,0.625,0.0625,0,0.25,0,0.6875,0.0625,0,0.375,0,0.75,0.0625,0,0.5,0,0.8125,0.0625,0,0.625,0,0.875,0.0625,0,0.75,0,0.9375,0.0625,0,0.875,0,1,0,0,1,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_14]
|
||||
Comment=Press, move up, move left, release.
|
||||
Enabled=true
|
||||
Name=Activate Previous Tab
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_14Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_14Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+,
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_14Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_14Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_14Triggers0]
|
||||
GesturePointData=0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_1Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_1Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Alt+Left
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_1Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_1Triggers0]
|
||||
GesturePointData=0,0.125,1,1,0.5,0.125,0.125,1,0.875,0.5,0.25,0.125,1,0.75,0.5,0.375,0.125,1,0.625,0.5,0.5,0.125,1,0.5,0.5,0.625,0.125,1,0.375,0.5,0.75,0.125,1,0.25,0.5,0.875,0.125,1,0.125,0.5,1,0,0,0,0.5
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_2]
|
||||
Comment=Press, move down, move up, move down, release.
|
||||
Enabled=true
|
||||
Name=Duplicate Tab
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_2Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_2Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+Shift+D\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_2Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_2Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_2Triggers0]
|
||||
GesturePointData=0,0.0416667,0.5,0.5,0,0.0416667,0.0416667,0.5,0.5,0.125,0.0833333,0.0416667,0.5,0.5,0.25,0.125,0.0416667,0.5,0.5,0.375,0.166667,0.0416667,0.5,0.5,0.5,0.208333,0.0416667,0.5,0.5,0.625,0.25,0.0416667,0.5,0.5,0.75,0.291667,0.0416667,0.5,0.5,0.875,0.333333,0.0416667,-0.5,0.5,1,0.375,0.0416667,-0.5,0.5,0.875,0.416667,0.0416667,-0.5,0.5,0.75,0.458333,0.0416667,-0.5,0.5,0.625,0.5,0.0416667,-0.5,0.5,0.5,0.541667,0.0416667,-0.5,0.5,0.375,0.583333,0.0416667,-0.5,0.5,0.25,0.625,0.0416667,-0.5,0.5,0.125,0.666667,0.0416667,0.5,0.5,0,0.708333,0.0416667,0.5,0.5,0.125,0.75,0.0416667,0.5,0.5,0.25,0.791667,0.0416667,0.5,0.5,0.375,0.833333,0.0416667,0.5,0.5,0.5,0.875,0.0416667,0.5,0.5,0.625,0.916667,0.0416667,0.5,0.5,0.75,0.958333,0.0416667,0.5,0.5,0.875,1,0,0,0.5,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_3]
|
||||
Comment=Press, move down, move up, release.
|
||||
Enabled=true
|
||||
Name=Duplicate Window
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_3Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_3Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+D\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_3Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_3Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_3Triggers0]
|
||||
GesturePointData=0,0.0625,0.5,0.5,0,0.0625,0.0625,0.5,0.5,0.125,0.125,0.0625,0.5,0.5,0.25,0.1875,0.0625,0.5,0.5,0.375,0.25,0.0625,0.5,0.5,0.5,0.3125,0.0625,0.5,0.5,0.625,0.375,0.0625,0.5,0.5,0.75,0.4375,0.0625,0.5,0.5,0.875,0.5,0.0625,-0.5,0.5,1,0.5625,0.0625,-0.5,0.5,0.875,0.625,0.0625,-0.5,0.5,0.75,0.6875,0.0625,-0.5,0.5,0.625,0.75,0.0625,-0.5,0.5,0.5,0.8125,0.0625,-0.5,0.5,0.375,0.875,0.0625,-0.5,0.5,0.25,0.9375,0.0625,-0.5,0.5,0.125,1,0,0,0.5,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_4]
|
||||
Comment=Press, move right, release.
|
||||
Enabled=true
|
||||
Name=Forward
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_4Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_4Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Alt+Right
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_4Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_4Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_4Triggers0]
|
||||
GesturePointData=0,0.125,0,0,0.5,0.125,0.125,0,0.125,0.5,0.25,0.125,0,0.25,0.5,0.375,0.125,0,0.375,0.5,0.5,0.125,0,0.5,0.5,0.625,0.125,0,0.625,0.5,0.75,0.125,0,0.75,0.5,0.875,0.125,0,0.875,0.5,1,0,0,1,0.5
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_5]
|
||||
Comment=Press, move down, move half up, move right, move down, release.\n(Drawing a lowercase 'h'.)
|
||||
Enabled=true
|
||||
Name=Home
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_5Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_5Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Alt+Home\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_5Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_5Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=2
|
||||
|
||||
[Data_1_2_5Triggers0]
|
||||
GesturePointData=0,0.0461748,0.5,0,0,0.0461748,0.0461748,0.5,0,0.125,0.0923495,0.0461748,0.5,0,0.25,0.138524,0.0461748,0.5,0,0.375,0.184699,0.0461748,0.5,0,0.5,0.230874,0.0461748,0.5,0,0.625,0.277049,0.0461748,0.5,0,0.75,0.323223,0.0461748,0.5,0,0.875,0.369398,0.065301,-0.25,0,1,0.434699,0.065301,-0.25,0.125,0.875,0.5,0.065301,-0.25,0.25,0.75,0.565301,0.065301,-0.25,0.375,0.625,0.630602,0.0461748,0,0.5,0.5,0.676777,0.0461748,0,0.625,0.5,0.722951,0.0461748,0,0.75,0.5,0.769126,0.0461748,0,0.875,0.5,0.815301,0.0461748,0.5,1,0.5,0.861476,0.0461748,0.5,1,0.625,0.90765,0.0461748,0.5,1,0.75,0.953825,0.0461748,0.5,1,0.875,1,0,0,1,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_5Triggers1]
|
||||
GesturePointData=0,0.0416667,0.5,0,0,0.0416667,0.0416667,0.5,0,0.125,0.0833333,0.0416667,0.5,0,0.25,0.125,0.0416667,0.5,0,0.375,0.166667,0.0416667,0.5,0,0.5,0.208333,0.0416667,0.5,0,0.625,0.25,0.0416667,0.5,0,0.75,0.291667,0.0416667,0.5,0,0.875,0.333333,0.0416667,-0.5,0,1,0.375,0.0416667,-0.5,0,0.875,0.416667,0.0416667,-0.5,0,0.75,0.458333,0.0416667,-0.5,0,0.625,0.5,0.0416667,0,0,0.5,0.541667,0.0416667,0,0.125,0.5,0.583333,0.0416667,0,0.25,0.5,0.625,0.0416667,0,0.375,0.5,0.666667,0.0416667,0,0.5,0.5,0.708333,0.0416667,0,0.625,0.5,0.75,0.0416667,0,0.75,0.5,0.791667,0.0416667,0,0.875,0.5,0.833333,0.0416667,0.5,1,0.5,0.875,0.0416667,0.5,1,0.625,0.916667,0.0416667,0.5,1,0.75,0.958333,0.0416667,0.5,1,0.875,1,0,0,1,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_6]
|
||||
Comment=Press, move right, move down, move right, release.\nMozilla-style: Press, move down, move right, release.
|
||||
Enabled=true
|
||||
Name=Close Tab
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_6Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_6Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+W\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_6Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_6Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=2
|
||||
|
||||
[Data_1_2_6Triggers0]
|
||||
GesturePointData=0,0.0625,0,0,0,0.0625,0.0625,0,0.125,0,0.125,0.0625,0,0.25,0,0.1875,0.0625,0,0.375,0,0.25,0.0625,0.5,0.5,0,0.3125,0.0625,0.5,0.5,0.125,0.375,0.0625,0.5,0.5,0.25,0.4375,0.0625,0.5,0.5,0.375,0.5,0.0625,0.5,0.5,0.5,0.5625,0.0625,0.5,0.5,0.625,0.625,0.0625,0.5,0.5,0.75,0.6875,0.0625,0.5,0.5,0.875,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_6Triggers1]
|
||||
GesturePointData=0,0.0625,0.5,0,0,0.0625,0.0625,0.5,0,0.125,0.125,0.0625,0.5,0,0.25,0.1875,0.0625,0.5,0,0.375,0.25,0.0625,0.5,0,0.5,0.3125,0.0625,0.5,0,0.625,0.375,0.0625,0.5,0,0.75,0.4375,0.0625,0.5,0,0.875,0.5,0.0625,0,0,1,0.5625,0.0625,0,0.125,1,0.625,0.0625,0,0.25,1,0.6875,0.0625,0,0.375,1,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_7]
|
||||
Comment=Press, move up, release.\nConflicts with Opera-style 'Up #2', which is disabled by default.
|
||||
Enabled=true
|
||||
Name=New Tab
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_7Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_7Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+Shift+N
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_7Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_7Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_7Triggers0]
|
||||
GesturePointData=0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_8]
|
||||
Comment=Press, move down, release.
|
||||
Enabled=true
|
||||
Name=New Window
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_8Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_8Actions0]
|
||||
DestinationWindow=2
|
||||
Input=Ctrl+N\n
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_8Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_8Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_8Triggers0]
|
||||
GesturePointData=0,0.125,0.5,0.5,0,0.125,0.125,0.5,0.5,0.125,0.25,0.125,0.5,0.5,0.25,0.375,0.125,0.5,0.5,0.375,0.5,0.125,0.5,0.5,0.5,0.625,0.125,0.5,0.5,0.625,0.75,0.125,0.5,0.5,0.75,0.875,0.125,0.5,0.5,0.875,1,0,0,0.5,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_2_9]
|
||||
Comment=Press, move up, move down, release.
|
||||
Enabled=true
|
||||
Name=Reload
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_2_9Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_2_9Actions0]
|
||||
DestinationWindow=2
|
||||
Input=F5
|
||||
Type=KEYBOARD_INPUT
|
||||
|
||||
[Data_1_2_9Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_2_9Triggers]
|
||||
Comment=Gesture_triggers
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_2_9Triggers0]
|
||||
GesturePointData=0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1
|
||||
Type=GESTURE
|
||||
|
||||
[Data_1_3]
|
||||
Comment=Comment
|
||||
DataCount=9
|
||||
Enabled=true
|
||||
Name=My Custom Binds
|
||||
SystemGroup=0
|
||||
Type=ACTION_DATA_GROUP
|
||||
|
||||
[Data_1_3Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_1]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Terminal
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_1Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_1Actions0]
|
||||
CommandURL=alacritty
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_1Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_1Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_1Triggers0]
|
||||
Key=Meta+R
|
||||
Type=SHORTCUT
|
||||
Uuid={7947b386-8c64-4402-b960-1fd4982fcc5f}
|
||||
|
||||
[Data_1_3_2]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Systemmonitor htop
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_2Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_2Actions0]
|
||||
CommandURL=alacritty --title="htop" --class="alacritty" -e "htop"
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_2Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_2Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_2Triggers0]
|
||||
Key=Ctrl+Alt+Shift+Del
|
||||
Type=SHORTCUT
|
||||
Uuid={7ad2cd8f-33d8-466b-8f2e-a07990160789}
|
||||
|
||||
[Data_1_3_3]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Systemmonitor plasma-systemmonitor
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_3Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_3Actions0]
|
||||
CommandURL=plasma-systemmonitor
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_3Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_3Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_3Triggers0]
|
||||
Key=Ctrl+Alt+Del
|
||||
Type=SHORTCUT
|
||||
Uuid={c1b5a969-9ec6-4258-8bff-b65e25000dfd}
|
||||
|
||||
[Data_1_3_4]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Weechat
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_4Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_4Actions0]
|
||||
CommandURL=alacritty --title="WeeChat" --class="WeeChat" -e "weechat"
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_4Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_4Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_4Triggers0]
|
||||
Key=Meta+F3
|
||||
Type=SHORTCUT
|
||||
Uuid={d438a876-53ac-43c9-9bf6-fb814bd5ea7e}
|
||||
|
||||
[Data_1_3_5]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Clerk
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_5Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_5Actions0]
|
||||
CommandURL=alacritty --title="Clerk" --class="alacritty" -e "clerk"
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_5Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_5Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_5Triggers0]
|
||||
Key=Meta+F2
|
||||
Type=SHORTCUT
|
||||
Uuid={b4173688-ff63-4244-a539-7da51f47da71}
|
||||
|
||||
[Data_1_3_6]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=KeepassXC
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_6Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_6Actions0]
|
||||
CommandURL=keepassxc
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_6Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_6Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_6Triggers0]
|
||||
Key=Ctrl+Alt+K
|
||||
Type=SHORTCUT
|
||||
Uuid={b41e0921-f940-4b23-acef-d7c8960278c7}
|
||||
|
||||
[Data_1_3_7]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Browser
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_7Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_7Actions0]
|
||||
CommandURL=firefox
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_7Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_7Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_7Triggers0]
|
||||
Key=Meta+B
|
||||
Type=SHORTCUT
|
||||
Uuid={3b363184-3371-4f75-a592-cabb0b12d8c9}
|
||||
|
||||
[Data_1_3_8]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Calc
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_8Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_8Actions0]
|
||||
CommandURL=kcalc
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_8Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_8Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_8Triggers0]
|
||||
Key=Launch (1)
|
||||
Type=SHORTCUT
|
||||
Uuid={9acd4a37-93d8-4a45-8e15-a487cbee3f89}
|
||||
|
||||
[Data_1_3_9]
|
||||
Comment=Comment
|
||||
Enabled=true
|
||||
Name=Code New Window
|
||||
Type=SIMPLE_ACTION_DATA
|
||||
|
||||
[Data_1_3_9Actions]
|
||||
ActionsCount=1
|
||||
|
||||
[Data_1_3_9Actions0]
|
||||
CommandURL=code --new-window
|
||||
Type=COMMAND_URL
|
||||
|
||||
[Data_1_3_9Conditions]
|
||||
Comment=
|
||||
ConditionsCount=0
|
||||
|
||||
[Data_1_3_9Triggers]
|
||||
Comment=Simple_action
|
||||
TriggersCount=1
|
||||
|
||||
[Data_1_3_9Triggers0]
|
||||
Key=Ctrl+Alt+Shift+C
|
||||
Type=SHORTCUT
|
||||
Uuid={57be2f28-6856-46f7-a077-caf0a43d6a36}
|
||||
|
||||
[Main]
|
||||
AllowMerge=false
|
||||
Version=2
|
444
KB/Linux/Desktop/KDE/configs/2021-09-03 Shortcuts (tiling).kksrc
Normal file
|
@ -0,0 +1,444 @@
|
|||
[ActivityManager][Global Shortcuts]
|
||||
switch-to-activity-2c0b1901-ae5a-42d9-91de-14a52141f058=Meta+Ctrl+!
|
||||
switch-to-activity-6629a2e4-0a98-49e9-bfbc-e70fe50362c1=Meta+Ctrl+2
|
||||
|
||||
[KDE Keyboard Layout Switcher][Global Shortcuts]
|
||||
Switch keyboard layout to German=
|
||||
Switch to Next Keyboard Layout=
|
||||
|
||||
[StandardShortcuts]
|
||||
AboutApp=
|
||||
AboutKDE=
|
||||
Activate Next Tab=Ctrl+PgDown; Ctrl+]
|
||||
Activate Previous Tab=Ctrl+[; Ctrl+PgUp
|
||||
ActualSize=Ctrl+0
|
||||
AddBookmark=Ctrl+B
|
||||
Back=Back; Alt+Left
|
||||
BackwardWord=Ctrl+Left
|
||||
Begin=Ctrl+Home
|
||||
BeginningOfLine=Home
|
||||
Clear=
|
||||
Close=Ctrl+W; Ctrl+Esc
|
||||
ConfigureNotifications=
|
||||
ConfigureToolbars=
|
||||
Copy=Ctrl+Ins; Ctrl+C
|
||||
CreateFolder=F10
|
||||
Cut=Ctrl+X; Shift+Del
|
||||
DeleteFile=Shift+Del
|
||||
DeleteWordBack=Ctrl+Backspace
|
||||
DeleteWordForward=Ctrl+Del
|
||||
Deselect=Ctrl+Shift+A
|
||||
DocumentBack=Alt+Shift+Left
|
||||
DocumentForward=Alt+Shift+Right
|
||||
Donate=
|
||||
EditBookmarks=
|
||||
End=Ctrl+End
|
||||
EndOfLine=End
|
||||
Find=Ctrl+F
|
||||
FindNext=F3
|
||||
FindPrev=Shift+F3
|
||||
FitToHeight=
|
||||
FitToPage=
|
||||
FitToWidth=
|
||||
Forward=Forward; Alt+Right
|
||||
ForwardWord=Ctrl+Right
|
||||
FullScreen=Ctrl+Shift+F
|
||||
Goto=
|
||||
GotoLine=Ctrl+G
|
||||
GotoPage=
|
||||
Help=F1
|
||||
Home=Home Page; Alt+Home
|
||||
KeyBindings=
|
||||
Mail=
|
||||
MoveToTrash=Del
|
||||
New=Ctrl+N
|
||||
Next=PgDown
|
||||
NextCompletion=Ctrl+Down
|
||||
Open=Ctrl+O
|
||||
OpenRecent=
|
||||
Paste=Shift+Ins; Ctrl+V
|
||||
Paste Selection=Ctrl+Shift+Ins
|
||||
Preferences=Ctrl+Shift+,
|
||||
PrevCompletion=Ctrl+Up
|
||||
Print=Ctrl+P
|
||||
PrintPreview=
|
||||
Prior=PgUp
|
||||
Quit=Ctrl+Q
|
||||
Redo=Ctrl+Shift+Z
|
||||
Reload=Refresh; F5
|
||||
RenameFile=F2
|
||||
Replace=Ctrl+R
|
||||
ReportBug=
|
||||
Revert=
|
||||
RotateDown=Down
|
||||
RotateUp=Up
|
||||
Save=Ctrl+S
|
||||
SaveAs=Ctrl+Shift+S
|
||||
SaveOptions=
|
||||
SelectAll=Ctrl+A
|
||||
ShowHideHiddenFiles=Alt+.; Ctrl+H
|
||||
ShowMenubar=Ctrl+M
|
||||
ShowStatusbar=
|
||||
ShowToolbar=
|
||||
Spelling=
|
||||
SubstringCompletion=Ctrl+T
|
||||
SwitchApplicationLanguage=
|
||||
TextCompletion=Ctrl+E
|
||||
TipofDay=
|
||||
Undo=Ctrl+Z
|
||||
Up=Alt+Up
|
||||
WhatsThis=Shift+F1
|
||||
Zoom=
|
||||
ZoomIn=Ctrl++; Ctrl+=
|
||||
ZoomOut=Ctrl+-
|
||||
|
||||
[kaccess][Global Shortcuts]
|
||||
Toggle Screen Reader On and Off=
|
||||
|
||||
[kcm_touchpad][Global Shortcuts]
|
||||
Disable Touchpad=Touchpad Off
|
||||
Enable Touchpad=Touchpad On
|
||||
Toggle Touchpad=Touchpad Toggle
|
||||
|
||||
[kded5][Global Shortcuts]
|
||||
Show System Activity=Ctrl+Esc
|
||||
display=Meta+P; Display
|
||||
|
||||
[khotkeys][Global Shortcuts]
|
||||
{3b363184-3371-4f75-a592-cabb0b12d8c9}=Meta+B
|
||||
{57be2f28-6856-46f7-a077-caf0a43d6a36}=Ctrl+Alt+Shift+C
|
||||
{7947b386-8c64-4402-b960-1fd4982fcc5f}=Meta+R
|
||||
{7ad2cd8f-33d8-466b-8f2e-a07990160789}=Ctrl+Alt+Shift+Del
|
||||
{9acd4a37-93d8-4a45-8e15-a487cbee3f89}=Launch (1)
|
||||
{b4173688-ff63-4244-a539-7da51f47da71}=Meta+F2
|
||||
{b41e0921-f940-4b23-acef-d7c8960278c7}=Ctrl+Alt+K
|
||||
{c1b5a969-9ec6-4258-8bff-b65e25000dfd}=Ctrl+Alt+Del
|
||||
{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=
|
||||
{d438a876-53ac-43c9-9bf6-fb814bd5ea7e}=Meta+F3
|
||||
|
||||
[kmix][Global Shortcuts]
|
||||
decrease_microphone_volume=Microphone Volume Down
|
||||
decrease_volume=Volume Down
|
||||
increase_microphone_volume=Microphone Volume Up
|
||||
increase_volume=Volume Up
|
||||
mic_mute=Microphone Mute
|
||||
mute=Volume Mute
|
||||
|
||||
[ksmserver][Global Shortcuts]
|
||||
Halt Without Confirmation=Ctrl+Alt+Shift+PgDown
|
||||
Lock Session=Ctrl+Alt+L
|
||||
Log Out=
|
||||
Log Out Without Confirmation=
|
||||
Reboot Without Confirmation=Ctrl+Alt+Shift+PgUp
|
||||
|
||||
[kwin][Global Shortcuts]
|
||||
Activate Window Demanding Attention=Ctrl+Alt+A
|
||||
Decrease Opacity=
|
||||
Expose=Ctrl+F9
|
||||
ExposeAll=Launch (C); Ctrl+F10
|
||||
ExposeClass=Ctrl+F7
|
||||
FlipSwitchAll=
|
||||
FlipSwitchCurrent=
|
||||
Increase Opacity=
|
||||
Invert Screen Colors=
|
||||
Kill Window=Ctrl+Alt+Esc
|
||||
Krohnkite: Cycle Layout=Meta+T
|
||||
Krohnkite: Decrease=
|
||||
Krohnkite: Down/Next=Meta+J
|
||||
Krohnkite: Float=Meta+F
|
||||
Krohnkite: Float All=
|
||||
Krohnkite: Floating Layout=
|
||||
Krohnkite: Grow Height=
|
||||
Krohnkite: Grow Width=
|
||||
Krohnkite: Increase=
|
||||
Krohnkite: Left=Meta+H
|
||||
Krohnkite: Monocle Layout=
|
||||
Krohnkite: Move Down/Next=Meta+Shift+J
|
||||
Krohnkite: Move Left=Meta+Shift+H
|
||||
Krohnkite: Move Right=Meta+Shift+L
|
||||
Krohnkite: Move Up/Prev=Meta+Shift+K
|
||||
Krohnkite: Next Layout=
|
||||
Krohnkite: Previous Layout=Meta+Shift+T
|
||||
Krohnkite: Quarter Layout=
|
||||
Krohnkite: Right=Meta+L
|
||||
Krohnkite: Rotate=
|
||||
Krohnkite: Rotate Part=
|
||||
Krohnkite: Set master=Meta+Return
|
||||
Krohnkite: Shrink Height=
|
||||
Krohnkite: Shrink Width=
|
||||
Krohnkite: Spread Layout=
|
||||
Krohnkite: Stair Layout=
|
||||
Krohnkite: Three Column Layout=
|
||||
Krohnkite: Tile Layout=
|
||||
Krohnkite: Up/Prev=Meta+K
|
||||
MoveMouseToCenter=Meta+F6
|
||||
MoveMouseToFocus=Meta+F5
|
||||
MoveZoomDown=
|
||||
MoveZoomLeft=
|
||||
MoveZoomRight=
|
||||
MoveZoomUp=
|
||||
Parachute=
|
||||
Setup Window Shortcut=
|
||||
Show Desktop=
|
||||
ShowDesktopGrid=Meta+S
|
||||
Suspend Compositing=
|
||||
Switch One Desktop Down=
|
||||
Switch One Desktop Up=
|
||||
Switch One Desktop to the Left=Meta+PgUp
|
||||
Switch One Desktop to the Right=Meta+PgDown
|
||||
Switch Window Down=
|
||||
Switch Window Left=
|
||||
Switch Window Right=
|
||||
Switch Window Up=
|
||||
Switch to Desktop 1=Meta+1
|
||||
Switch to Desktop 10=
|
||||
Switch to Desktop 11=
|
||||
Switch to Desktop 12=
|
||||
Switch to Desktop 13=
|
||||
Switch to Desktop 14=
|
||||
Switch to Desktop 15=
|
||||
Switch to Desktop 16=
|
||||
Switch to Desktop 17=
|
||||
Switch to Desktop 18=
|
||||
Switch to Desktop 19=
|
||||
Switch to Desktop 2=Meta+2
|
||||
Switch to Desktop 20=
|
||||
Switch to Desktop 3=Meta+3
|
||||
Switch to Desktop 4=Meta+4
|
||||
Switch to Desktop 5=Meta+5
|
||||
Switch to Desktop 6=Meta+6
|
||||
Switch to Desktop 7=
|
||||
Switch to Desktop 8=
|
||||
Switch to Desktop 9=
|
||||
Switch to Next Desktop=
|
||||
Switch to Next Screen=Meta+,
|
||||
Switch to Previous Desktop=
|
||||
Switch to Previous Screen=
|
||||
Switch to Screen 0=
|
||||
Switch to Screen 1=
|
||||
Switch to Screen 2=
|
||||
Switch to Screen 3=
|
||||
Switch to Screen 4=
|
||||
Switch to Screen 5=
|
||||
Switch to Screen 6=
|
||||
Switch to Screen 7=
|
||||
Toggle Night Color=
|
||||
Toggle Window Raise/Lower=
|
||||
Walk Through Desktop List=
|
||||
Walk Through Desktop List (Reverse)=
|
||||
Walk Through Desktops=
|
||||
Walk Through Desktops (Reverse)=
|
||||
Walk Through Windows=Alt+Tab
|
||||
Walk Through Windows (Reverse)=Alt+Shift+Backtab
|
||||
Walk Through Windows Alternative=
|
||||
Walk Through Windows Alternative (Reverse)=
|
||||
Walk Through Windows of Current Application=Alt+`
|
||||
Walk Through Windows of Current Application (Reverse)=Alt+~
|
||||
Walk Through Windows of Current Application Alternative=
|
||||
Walk Through Windows of Current Application Alternative (Reverse)=
|
||||
Window Above Other Windows=
|
||||
Window Below Other Windows=
|
||||
Window Close=Meta+Q; Alt+F4
|
||||
Window Fullscreen=
|
||||
Window Grow Horizontal=
|
||||
Window Grow Vertical=
|
||||
Window Lower=
|
||||
Window Maximize=
|
||||
Window Maximize Horizontal=
|
||||
Window Maximize Vertical=
|
||||
Window Minimize=
|
||||
Window Move=
|
||||
Window No Border=
|
||||
Window On All Desktops=
|
||||
Window One Desktop Down=
|
||||
Window One Desktop Up=
|
||||
Window One Desktop to the Left=Meta+Shift+PgUp; Meta+Shift+Home
|
||||
Window One Desktop to the Right=Meta+Shift+PgDown; Meta+Shift+End
|
||||
Window Operations Menu=
|
||||
Window Pack Down=
|
||||
Window Pack Left=
|
||||
Window Pack Right=
|
||||
Window Pack Up=
|
||||
Window Quick Tile Bottom=
|
||||
Window Quick Tile Bottom Left=
|
||||
Window Quick Tile Bottom Right=
|
||||
Window Quick Tile Left=
|
||||
Window Quick Tile Right=
|
||||
Window Quick Tile Top=
|
||||
Window Quick Tile Top Left=
|
||||
Window Quick Tile Top Right=
|
||||
Window Raise=
|
||||
Window Resize=
|
||||
Window Shade=
|
||||
Window Shrink Horizontal=
|
||||
Window Shrink Vertical=
|
||||
Window to Desktop 1=Meta+!
|
||||
Window to Desktop 10=
|
||||
Window to Desktop 11=
|
||||
Window to Desktop 12=
|
||||
Window to Desktop 13=
|
||||
Window to Desktop 14=
|
||||
Window to Desktop 15=
|
||||
Window to Desktop 16=
|
||||
Window to Desktop 17=
|
||||
Window to Desktop 18=
|
||||
Window to Desktop 19=
|
||||
Window to Desktop 2=Meta+"
|
||||
Window to Desktop 20=
|
||||
Window to Desktop 3=Meta+§
|
||||
Window to Desktop 4=Meta+$
|
||||
Window to Desktop 5=Meta+%
|
||||
Window to Desktop 6=Meta+&
|
||||
Window to Desktop 7=
|
||||
Window to Desktop 8=
|
||||
Window to Desktop 9=
|
||||
Window to Next Desktop=
|
||||
Window to Next Screen=Meta+>
|
||||
Window to Previous Desktop=
|
||||
Window to Previous Screen=Meta+<
|
||||
Window to Screen 0=
|
||||
Window to Screen 1=
|
||||
Window to Screen 2=
|
||||
Window to Screen 3=
|
||||
Window to Screen 4=
|
||||
Window to Screen 5=
|
||||
Window to Screen 6=
|
||||
Window to Screen 7=
|
||||
WindowGeometry=Ctrl+Shift+F11
|
||||
view_actual_size=Meta+0
|
||||
view_zoom_in=
|
||||
view_zoom_out=
|
||||
|
||||
[lattedock][Global Shortcuts]
|
||||
activate entry 1=
|
||||
activate entry 10=
|
||||
activate entry 11=
|
||||
activate entry 12=
|
||||
activate entry 13=
|
||||
activate entry 14=
|
||||
activate entry 15=
|
||||
activate entry 16=
|
||||
activate entry 17=
|
||||
activate entry 18=
|
||||
activate entry 19=
|
||||
activate entry 2=
|
||||
activate entry 3=
|
||||
activate entry 4=
|
||||
activate entry 5=
|
||||
activate entry 6=
|
||||
activate entry 7=
|
||||
activate entry 8=
|
||||
activate entry 9=
|
||||
clear-history=
|
||||
clipboard_action=
|
||||
cycleNextAction=
|
||||
cyclePrevAction=
|
||||
edit_clipboard=
|
||||
new instance for entry 1=
|
||||
new instance for entry 10=
|
||||
new instance for entry 11=
|
||||
new instance for entry 12=
|
||||
new instance for entry 13=
|
||||
new instance for entry 14=
|
||||
new instance for entry 15=
|
||||
new instance for entry 16=
|
||||
new instance for entry 17=
|
||||
new instance for entry 18=
|
||||
new instance for entry 19=
|
||||
new instance for entry 2=
|
||||
new instance for entry 3=
|
||||
new instance for entry 4=
|
||||
new instance for entry 5=
|
||||
new instance for entry 6=
|
||||
new instance for entry 7=
|
||||
new instance for entry 8=
|
||||
new instance for entry 9=
|
||||
repeat_action=
|
||||
show latte global settings=
|
||||
show latte view=
|
||||
show view settings=
|
||||
show-barcode=
|
||||
show-on-mouse-pos=
|
||||
|
||||
[mediacontrol][Global Shortcuts]
|
||||
mediavolumedown=
|
||||
mediavolumeup=
|
||||
nextmedia=Media Next
|
||||
pausemedia=Media Pause
|
||||
playmedia=
|
||||
playpausemedia=Media Play
|
||||
previousmedia=Media Previous
|
||||
stopmedia=Media Stop
|
||||
|
||||
[org.kde.dolphin.desktop][Global Shortcuts]
|
||||
_launch=Meta+E
|
||||
|
||||
[org.kde.krunner.desktop][Global Shortcuts]
|
||||
RunClipboard=Alt+Shift+F2
|
||||
_launch=Meta+Space; Alt+Space; Alt+F2; Search
|
||||
|
||||
[org.kde.plasma.emojier.desktop][Global Shortcuts]
|
||||
_launch=
|
||||
|
||||
[org.kde.spectacle.desktop][Global Shortcuts]
|
||||
ActiveWindowScreenShot=
|
||||
CurrentMonitorScreenShot=
|
||||
FullScreenScreenShot=
|
||||
RectangularRegionScreenShot=Print
|
||||
WindowUnderCursorScreenShot=Meta+Ctrl+Print
|
||||
_launch=
|
||||
|
||||
[org_kde_powerdevil][Global Shortcuts]
|
||||
Decrease Keyboard Brightness=Keyboard Brightness Down
|
||||
Decrease Screen Brightness=Monitor Brightness Down
|
||||
Hibernate=Hibernate
|
||||
Increase Keyboard Brightness=Keyboard Brightness Up
|
||||
Increase Screen Brightness=Monitor Brightness Up
|
||||
PowerDown=Power Down
|
||||
PowerOff=Power Off
|
||||
Sleep=Sleep
|
||||
Toggle Keyboard Backlight=Keyboard Light On/Off
|
||||
Turn Off Screen=
|
||||
|
||||
[plasmashell][Global Shortcuts]
|
||||
activate task manager entry 1=
|
||||
activate task manager entry 10=
|
||||
activate task manager entry 2=
|
||||
activate task manager entry 3=
|
||||
activate task manager entry 4=
|
||||
activate task manager entry 5=
|
||||
activate task manager entry 6=
|
||||
activate task manager entry 7=Meta+7
|
||||
activate task manager entry 8=Meta+8
|
||||
activate task manager entry 9=Meta+9
|
||||
activate widget 12=Meta+V
|
||||
activate widget 24=
|
||||
activate widget 25=
|
||||
activate widget 27=
|
||||
activate widget 28=
|
||||
activate widget 4=Alt+F1
|
||||
activate widget 47=
|
||||
clear-history=
|
||||
clipboard_action=Ctrl+Alt+X
|
||||
cycleNextAction=
|
||||
cyclePrevAction=
|
||||
edit_clipboard=
|
||||
manage activities=Meta+Alt+Shift+Q
|
||||
next activity=Meta+Tab
|
||||
previous activity=Meta+Shift+Tab
|
||||
repeat_action=Ctrl+Alt+R
|
||||
show dashboard=
|
||||
show-barcode=
|
||||
show-on-mouse-pos=
|
||||
stop current activity=
|
||||
switch to next activity=
|
||||
switch to previous activity=
|
||||
toggle do not disturb=
|
||||
|
||||
[systemsettings.desktop][Global Shortcuts]
|
||||
_launch=Tools
|
||||
kcm-kscreen=
|
||||
kcm-lookandfeel=
|
||||
kcm-users=
|
||||
powerdevilprofilesconfig=
|
||||
screenlocker=
|
BIN
KB/Linux/Desktop/KDE/configs/Font Settings.png
Normal file
After Width: | Height: | Size: 41 KiB |
12
KB/Linux/Desktop/KDE/desktop-files/KDE_Logout.desktop
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Comment=Logout
|
||||
Exec=kdialog --title "Logout" --icon system-log-out --warningyesno "Are you sure you want to logout?" && bash -c 'notify-send "Logging out...";loginctl terminate-user $USER'
|
||||
GenericName=Logout
|
||||
Icon=system-log-out
|
||||
Name=Logout
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-DBUS-ServiceName=
|
||||
X-DBUS-StartupType=none
|
||||
X-KDE-SubstituteUID=false
|
12
KB/Linux/Desktop/KDE/desktop-files/KDE_Reboot.desktop
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Comment=Reboot
|
||||
Exec=kdialog --title "Reboot system" --icon system-reboot --warningyesno "Are you sure you want to reboot?" && bash -c 'notify-send "Rebooting...";systemctl reboot'
|
||||
GenericName=Reboot
|
||||
Icon=system-reboot
|
||||
Name=Reboot
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-DBUS-ServiceName=
|
||||
X-DBUS-StartupType=none
|
||||
X-KDE-SubstituteUID=false
|
12
KB/Linux/Desktop/KDE/desktop-files/KDE_Shutdown.desktop
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Comment=Shutdown
|
||||
Exec=kdialog --title "Shutdown system" --icon system-shutdown --warningyesno "Are you sure you want to shutdown?" && bash -c 'notify-send "Shutting down...";systemctl poweroff'
|
||||
GenericName=Shutdown
|
||||
Icon=system-shutdown
|
||||
Name=Shutdown
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-DBUS-ServiceName=
|
||||
X-DBUS-StartupType=none
|
||||
X-KDE-SubstituteUID=false
|
12
KB/Linux/Desktop/KDE/desktop-files/KDE_Suspend.desktop
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Comment=Suspend
|
||||
Exec=kdialog --title "Suspend system" --icon system-Suspend --warningyesno "Are you sure you want to Suspend?" && bash -c 'notify-send "Suspending...";systemctl suspend'
|
||||
GenericName=Suspend
|
||||
Icon=system-suspend
|
||||
Name=Suspend
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-DBUS-ServiceName=
|
||||
X-DBUS-StartupType=none
|
||||
X-KDE-SubstituteUID=false
|
9
KB/Linux/Desktop/KDE/dolphin-actions/kde-chmod.desktop
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
Name=chmod
|
||||
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,application/octet-stream
|
||||
Actions=action;
|
||||
|
||||
[Desktop Action action]
|
||||
Name=chmod
|
||||
Exec=chmod +x %f
|
12
KB/Linux/Desktop/KDE/dolphin-actions/kde-code.desktop
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
Name=Open in Code
|
||||
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
|
||||
MimeType=inode/directory
|
||||
Actions=action;
|
||||
|
||||
[Desktop Action action]
|
||||
Name=Open in Code
|
||||
Icon=com.visualstudio.code.oss
|
||||
Exec=code %f
|
||||
ExecutionMode=Terminal
|
9
KB/Linux/Desktop/KDE/dolphin-actions/kde-filebin.desktop
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
Name=FileBin
|
||||
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,application/octet-stream
|
||||
Actions=action;
|
||||
|
||||
[Desktop Action action]
|
||||
Name=FileBin
|
||||
Exec=$HOME/.bin/fb_notify %U
|
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
Name=Remove exif
|
||||
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,image/*
|
||||
Actions=action;
|
||||
|
||||
[Desktop Action action]
|
||||
Name=Remove exif
|
||||
Exec=mogrify -strip %f
|
9
KB/Linux/Desktop/KDE/dolphin-actions/kde-tail.desktop
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
Name=tail
|
||||
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,application/octet-stream
|
||||
Actions=action;
|
||||
|
||||
[Desktop Action action]
|
||||
Name=tail
|
||||
Exec=alacritty -e "tail -f %f"
|
173
KB/Linux/Desktop/Surface.md
Normal file
|
@ -0,0 +1,173 @@
|
|||
---
|
||||
creation date: 2022-09-02
|
||||
tags: [surface,linux,sp8,microsoft]
|
||||
---
|
||||
|
||||
# Surface
|
||||
|
||||
A guide for the [Surface Pro 8](https://github.com/linux-surface/linux-surface/wiki/Surface-Pro-8). Based on https://github.com/linux-surface/linux-surface/wiki.
|
||||
|
||||
This guide is for [ArchLinux](https://archlinux.org/) and improves the instructions to be more structured and suited for the SP8.
|
||||
|
||||
## Prerequisites
|
||||
* USB adapter cable for USB A to USB C
|
||||
* USB Drive, see [[KB/Linux/Desktop/Archinstall]] for getting an ISO onto USB
|
||||
* External keyboard, because Type Cover will not work without custom kernel
|
||||
|
||||
## Prepare
|
||||
* If Windows is still on disk, boot into it and update everything, so Surface firmware gets updated
|
||||
* Head into BIOS to _change boot order_ and disable _Secure Boot_
|
||||
* Shut down device
|
||||
* Press and hold _Volume up_ and in parallel hit power button once until boot logo appears
|
||||
* Keep _Volume up_ pressed
|
||||
* Disable Secure Boot entirely
|
||||
* Change boot order by drag'n'drop USB Drive to first position, maybe uncheck all other options
|
||||
|
||||
## Install
|
||||
Boot from USB drive and edit ISO live boot options to copy USB drive contents to RAM, because you need to plug in an external keyboard for installation
|
||||
|
||||
* Press _e_ during selection of Arch ISO
|
||||
* Add `copytoram=y` as option
|
||||
* Exit with CTRL+x
|
||||
|
||||
Proceed with install like you would usually do. [[KB/Linux/Desktop/Archinstall]] is an easy way with little configuration to get an install up and running.
|
||||
|
||||
This installation uses `systemd-boot` as bootloader. Your experience of the tutorial may vary if you pick another one.
|
||||
|
||||
In generel, you should pick wayland. It has much better touch, gesture and pen support.
|
||||
|
||||
## Post install
|
||||
|
||||
After you've successfully booted into your installation, some additional steps need to be performed to get your Type Cover and touchpad etc. working.
|
||||
|
||||
Disclaimer: Don't mix the `iptsd` of the official repository with the `iptsd` mentioned here, they're different and may soon get merged.
|
||||
|
||||
### pacman repository
|
||||
|
||||
Let's add the the official _pacman_ repository of _linux-surface_
|
||||
|
||||
```shell
|
||||
curl -s https://raw.githubusercontent.com/linux-surface/linux-surface/master/pkg/keys/surface.asc sudo pacman-key --add -
|
||||
sudo pacman-key --finger 56C464BAAC421453
|
||||
sudo pacman-key --lsign-key 56C464BAAC421453
|
||||
```
|
||||
|
||||
Edit `/etc/pacman.conf`:
|
||||
|
||||
```shell
|
||||
[linux-surface]
|
||||
Server = https://pkg.surfacelinux.com/arch/
|
||||
```
|
||||
|
||||
Refresh by invoking `sudo pacman -Syu`
|
||||
|
||||
### Install required packages
|
||||
|
||||
Install the following packages, some of them are also in the [AUR](https://aur.archlinux.org/).
|
||||
|
||||
```shell
|
||||
# the actual kernel and their headers
|
||||
linux-surface
|
||||
linux-surface-headers
|
||||
|
||||
# SP 8 is an Intel device
|
||||
intel-ucode
|
||||
|
||||
# needed for later compiling modules
|
||||
dkms
|
||||
meson
|
||||
```
|
||||
|
||||
### Make touchpad work and allow Type Cover during early boot (luks)
|
||||
|
||||
Touchpad will _not_ work out of the box. The SP8 needs a different touchpad module and the _proper_ `iptsd`, not the one from the official linux-surface repository.
|
||||
|
||||
Ensure that `dkms` and `meson` are installed.
|
||||
|
||||
1. Clone `git clone https://github.com/quo/ithc-linux`
|
||||
1. `cd ithc-linux`
|
||||
2. Execute `sudo make dkms-install`
|
||||
2. Clone `git clone https://github.com/quo/iptsd`
|
||||
1. `cd iptsd`
|
||||
2. Execute the following commands in order
|
||||
|
||||
```shell
|
||||
meson build --wrap-mode=forcefallback --buildtype=debugoptimized -Dmarch=native
|
||||
ninja -C build
|
||||
sudo build/src/daemon/iptsd
|
||||
sudo ninja -C build install
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable iptsd.service
|
||||
```
|
||||
|
||||
* For _ ithc_ to load properly, you need to edit kernel parameters in your `entries/....conf` file and add `intremap=nosid`. Add a `.conf` for the SP8 if not already present.
|
||||
* You also need to edit the `MODULES` in your `/etc/mkinitcpio.conf` so that type cover will also work during early [encryption](https://github.com/linux-surface/linux-surface/wiki/Disk-Encryption) dialog
|
||||
|
||||
```shell
|
||||
MODULES=(btrfs i915 surface_aggregator surface_aggregator_registry surface_aggregator_hub surface_hid_core 8250_dw surface_hid surface_kbd intel_lpss intel_lpss_pci pinctrl_tigerlake)
|
||||
```
|
||||
|
||||
* Regenerate initramfs with `mkinitcpio -P`
|
||||
* Reboot, you should no longer need your external keyboard
|
||||
|
||||
### pen
|
||||
|
||||
Install `libwacom-surface` from the [AUR](https://aur.archlinux.org/).
|
||||
|
||||
### screen rotation
|
||||
|
||||
Install `iio-sensor-proxy`.
|
||||
|
||||
### 120hz display
|
||||
|
||||
Follow instructions [here](https://github.com/linux-surface/linux-surface/wiki/Surface-Pro-8#enable-120hz-and-solve-screen-flickering) to extract the EDID. Ensure you're in X.org.
|
||||
|
||||
Afterwards, your `entries/....conf` systemd-boot entry could look like
|
||||
|
||||
```shell
|
||||
title Arch Linux (linux-surface)
|
||||
linux /vmlinuz-linux-surface
|
||||
initrd /intel-ucode.img
|
||||
initrd /initramfs-linux-surface.img
|
||||
options ... intremap=nosid drm_kms_helper.edid_firmware=eDP-1:edid/edid.bin
|
||||
```
|
||||
|
||||
In addition, your `/etc/mkinitcpio.conf` needs `FILES=(/usr/lib/firmware/edid/edid.bin)` and ensure you re-generate initramfs with `mkinitcpio -P`.
|
||||
|
||||
### Fix Type Cover suspend
|
||||
|
||||
If suspended via Type Cover, Touch might not work. Prevent this by editing `/etc/libinput/local-overrides.quirks` and add the following contents
|
||||
|
||||
```shell
|
||||
[Microsoft Surface Cover]
|
||||
MatchName=*Microsoft Surface *Cover*
|
||||
MatchDMIModalias=dmi:*svnMicrosoftCorporation:*
|
||||
AttrKeyboardIntegration=internal
|
||||
ModelTabletModeNoSuspend=1
|
||||
```
|
||||
|
||||
Reboot.
|
||||
|
||||
## Recommended software
|
||||
|
||||
[[KB/Linux/GNOME]] has wonderful support for touch devices. You should probably use it.
|
||||
|
||||
Useful GNOME extensions
|
||||
* improved gestures `gestureImprovements@gestures` (https://extensions.gnome.org/extension/4245/gesture-improvements/)
|
||||
* improved on screen keyboard `improved-osk` (https://extensions.gnome.org/extension/4413/improved-osk/)
|
||||
|
||||
List of extensions personally used:
|
||||
|
||||
```json
|
||||
[
|
||||
"appindicatorsupport@rgcjonas.gmail.com",
|
||||
"dash-to-dock@micxgx.gmail.com",
|
||||
"gestureImprovements@gestures",
|
||||
"improvedosk@nick-shmyrev.dev",
|
||||
"launch-new-instance@gnome-shell-extensions.gcampax.github.com",
|
||||
"workspace-indicator@gnome-shell-extensions.gcampax.github.com"
|
||||
]
|
||||
```
|
||||
|
||||
`xournal` is a wonderful program for you pen.
|
||||
|
108
KB/Linux/Desktop/Theming Qt and Gtk.md
Normal file
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,qt,gtk,linux,archlinux]
|
||||
---
|
||||
|
||||
# Theming Qt and Gtk
|
||||
|
||||
Heavily based on [ArchLinux Wiki](https://wiki.archlinux.org/title/Uniform_look_for_Qt_and_GTK_applications).
|
||||
|
||||
Unify Qt5/Qt6 and GTK2/GTK3 design.
|
||||
|
||||
Use recommended `96` DPI. Scaling is hell, don't try it!
|
||||
|
||||
Of course, this depends on your personal preference. If you pick
|
||||
|
||||
* GNOME the default _Adwaita (dark)_ theme is very pleasing and
|
||||
* for all other scenarios, _Arc (Darker)_ looks great.
|
||||
|
||||
## Theme
|
||||
|
||||
### Qt applications
|
||||
|
||||
To unify look in GTK and Qt applications, install
|
||||
|
||||
```shell
|
||||
qt5ct
|
||||
qt6ct
|
||||
```
|
||||
|
||||
**Important:** In any environment (your shell env and probably `envvars` of `environment.d`) source, e.g. `.zshenv`, set `export QT_QPA_PLATFORMTHEME="qt5ct"` (which is also forward compatible with `qt6ct`).
|
||||
|
||||
#### If your choice is Adwaita
|
||||
|
||||
For _Adwaita_ install the following
|
||||
|
||||
```shell
|
||||
adwaita-qt5
|
||||
adwaita-qt6
|
||||
```
|
||||
|
||||
* Start each and do the same: `qt5ct` and `qt6ct`
|
||||
* select and dialogs to _Default_
|
||||
* select _Default_ as Palette
|
||||
* select _Adwaita (Dark)_ as theme
|
||||
|
||||
#### If your choice is another theme, e.g. Arc (Dark/Darker)
|
||||
|
||||
* Install the following packages depending on your choice
|
||||
|
||||
```shell
|
||||
arc-gtk-theme
|
||||
arc-kde
|
||||
kvantum
|
||||
# Arc or any other kvantum supported theme
|
||||
kvantum-theme-arc
|
||||
```
|
||||
|
||||
* Start each and do the same: `qt5ct` and `qt6ct`
|
||||
* select and dialogs to _Default_
|
||||
* select _Default_ as Palette
|
||||
* Use `kvantummanager` and select theme `KvArc...` (or what you like to set)
|
||||
|
||||
### Gtk 3 applications
|
||||
|
||||
Set your proper theme via respective utilities like `nwg-look` and/or GNOME Tweaks for GTK 4.
|
||||
|
||||
### Gtk 2
|
||||
|
||||
Set your proper theme via respective utilities like `nwg-look`.
|
||||
|
||||
Install the Gtk 2 variant of your theme first, e.g. `adwaita-dark` or `arc-theme`.
|
||||
|
||||
## Font
|
||||
|
||||
_Noto Sans Regular (11)_ seems great. Set it everywhere.
|
||||
|
||||
Set them via `qt5ct`, `qt6ct` and via respective utilities like `nwg-look` and/or GNOME Tweaks for GTK.
|
||||
|
||||
In addition, adapting `fontconfig` might be useful. See [[KB/Linux/Desktop/Fonts]].
|
||||
|
||||
## Icons
|
||||
|
||||
`papirus-icon-theme` looks great, but you should also install some fallbacks.
|
||||
|
||||
```shell
|
||||
papirus-icon-theme
|
||||
arc-icon-theme
|
||||
adwaita-icon-theme
|
||||
```
|
||||
|
||||
Set them via `qt5ct`, `qt6ct` and via respective utilities like `nwg-look` and/or GNOME Tweaks for GTK.
|
||||
|
||||
## Application specifics
|
||||
|
||||
* rofi: Dark
|
||||
* In Firefox install theme and use
|
||||
* In Thunderbird disable/enable system theme if changes are not applied
|
||||
* JetBrains products
|
||||
* Default or Dracula Official
|
||||
* Don't set anything in Appearance fonts
|
||||
* Change editor to Noto Mono with 15px and 1.3 line height
|
||||
* Visual Studio Code
|
||||
* Default or Dracula Official
|
||||
* 16px font size everywhere
|
||||
* Alacritty
|
||||
* base16-atelier-forest
|
||||
* GNOME Terminal
|
||||
* Prefer dark
|
174
KB/Linux/Desktop/Tweaks.md
Normal file
|
@ -0,0 +1,174 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,archlinux]
|
||||
---
|
||||
|
||||
# Tweaks
|
||||
|
||||
**TAKEN FROM:** https://gist.github.com/lbrame/1678c00213c2bd069c0a59f8733e0ee6
|
||||
|
||||
This is a collection of the tweaks and modification I've made to my Arch Linux installation over the months. These may be applicable to other distros, but please check first before doing anything. I also included Arch Wiki references for all the procedures I mentioned. My recommendation is not to blindly follow this gist but to always check with the Arch Linux wiki first. Things move fast and by the time you're reading this my gist may be out of date. Lastly, the golden rule: never execute a command you don't understand.
|
||||
|
||||
## Yay!
|
||||
|
||||
I use `yay` as my AUR helper. You can install it from the AUR:
|
||||
|
||||
```shell
|
||||
git clone https://aur.archlinux.org/yay.git
|
||||
cd yay
|
||||
makepkg -csi
|
||||
```
|
||||
|
||||
## Fonts!
|
||||
|
||||
### Installing missing fonts
|
||||
|
||||
DEs often don't include common fonts that some programs require. See [[KB/Linux/Desktop/Fonts]].
|
||||
|
||||
### Enabling ClearType rendering
|
||||
|
||||
Microsoft no longer holds their patents on the ClearType font rendering and it has been merged to upstream `freetype2`.
|
||||
|
||||
Create the file `~/.config/fontconfig/conf.d/20-no-embedded.conf` and make it look like the following:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||
<fontconfig>
|
||||
<match target="font">
|
||||
<edit name="embeddedbitmap" mode="assign">
|
||||
<bool>false</bool>
|
||||
</edit>
|
||||
</match>
|
||||
</fontconfig>
|
||||
```
|
||||
|
||||
Finally, log in again. This is an user setting and it will be reverted if you ever delete this file and it won't work on other users.
|
||||
|
||||
### Installing Windows fonts
|
||||
|
||||
I finally added Microsoft fonts as they're handy to keep around and tend to be necessary to display web pages and Office documents correctly.
|
||||
|
||||
To install them system wide, copy the `C:\Windows\Fonts` folder from a Windows installation to `/usr/share/fonts`:
|
||||
|
||||
```shell
|
||||
mkdir /usr/share/fonts/WindowsFonts
|
||||
cp /windows/Windows/Fonts/* /usr/share/fonts/WindowsFonts/
|
||||
chmod 644 /usr/share/fonts/WindowsFonts/*
|
||||
```
|
||||
|
||||
These commands assume your Windows partition is mounted at /windows as they've been copied verbatim from the Arch Wiki. If you don't dual boot or don't mount your Windows partition to /windows, just replace `/windows/Windows/Fonts/*` with wherever location you copied that folder to.
|
||||
|
||||
## Improving I/O performance
|
||||
|
||||
### Using the BFQ scheduler
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Improving_performance#Changing_I/O_scheduler
|
||||
|
||||
Linux notoriously gets very slow with I/O intensive operations such as moving a lot of files at once and swapping. **If** you have a **spinning hard drive or a not-so-fast SSD**, the BFQ scheduler can help improve system responsiveness during I/O intensive operations. I still use a SATA SSD for lack of a faster connector on my laptop and I have perceived significantly better overall performance by using the BFQ I/O scheduler. If your boot disk is a fast NVme SSD it's generally not the best idea to use the `bfq` scheduler for it, but since the I/O scheduler is set per-disk, it might be a good idea to use it for any spinning hard disk permanently connected to the computer (e.g. a secondary disk to store games and movies).
|
||||
|
||||
To set the BFQ scheduler, you need to specify some `udev` rules to tell Linux what scheduler to use on what kind of disks. For example, you could use the `mq-deadline` scheduler on your NVme drives and the `bfq` scheduler on your SSDs. I decided to set my rules in such a way that no scheduler is used for NVme SSDs, but `bfq` is used for everything else. To do this, create the file `/etc/udev/rules.d/60-ioschedulers.rules` and fill it in as below:
|
||||
|
||||
```shell
|
||||
# set scheduler for NVMe
|
||||
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
|
||||
# set scheduler for SSD and eMMC
|
||||
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="bfq"
|
||||
# set scheduler for rotating disks
|
||||
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
|
||||
```
|
||||
|
||||
Reboot and you're done.
|
||||
|
||||
### Setting ext4 commit frequency to 60
|
||||
|
||||
Please see [[KB/Linux/Disk Speed]].
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Ext4#Improving_performance
|
||||
|
||||
### Improving laptop battery life with TLP and powertop
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/TLP https://wiki.archlinux.org/index.php/Powertop
|
||||
|
||||
Linux distros tend to deplete laptops' batteries quite quickly, which can be detrimental to some. `tlp` is a set-and-forget, auto-tuning option for laptops that I have found to work very well (albeit it comes with drawbacks, such as a perceived decrease in performance). Setting it up on Arch Linux is pretty straightforward:
|
||||
|
||||
```shell
|
||||
pacman -S tlp
|
||||
systemctl enable tlp.service --now
|
||||
```
|
||||
|
||||
`powertop` is a powerful commandline program to keep track of battery consumption. It also allows the user to quickly alter some system settings that have an impact on battery life. You can use it to make a quick tuning:
|
||||
|
||||
```
|
||||
# powertop --auto-tune
|
||||
```
|
||||
|
||||
However, don't enable `powertop`'s service if you already use TLP.
|
||||
|
||||
## Systemd configuration
|
||||
|
||||
Also see [[KB/Linux/Desktop/systemd]].
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Systemd/
|
||||
|
||||
### Taming the journal's size
|
||||
|
||||
Systemd's system journal's size can go out of control. There are some things you can do to keep it in control:
|
||||
|
||||
```
|
||||
# journalctl --vacuum-size=100M
|
||||
# journalctl --vacuum-time=2weeks
|
||||
```
|
||||
|
||||
### Forwarding the journal to /dev/tty12
|
||||
|
||||
This is very simple. Just create the file `/etc/systemd/journald.conf.d/fw-tty12.conf` and fill it like this:
|
||||
|
||||
```
|
||||
[Journal]
|
||||
ForwardToConsole=yes
|
||||
TTYPath=/dev/tty12
|
||||
MaxLevelConsole=info
|
||||
```
|
||||
|
||||
Then, restart the service:
|
||||
|
||||
```
|
||||
# systemctl restart systemd-journald.service
|
||||
```
|
||||
|
||||
## Microcode
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Microcode https://en.wikipedia.org/wiki/Intel_Microcode
|
||||
|
||||
## Using the modesetting driver
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Kernel_mode_setting#Early_KMS_start
|
||||
|
||||
## Enabling Early KMS
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Kernel_mode_setting#Early_KMS_start https://wiki.archlinux.org/index.php/Mkinitcpio#Image_creation_and_activation
|
||||
|
||||
I decided to start kernel modesetting during the initramfs stage. To do this, you can just add the `i915` or `amdgpu` module to `/etc/mkinitcpio.conf` like this:
|
||||
|
||||
```shell
|
||||
MODULES=(i915)
|
||||
# or
|
||||
MODULES=(amdgpu)
|
||||
```
|
||||
|
||||
And then
|
||||
|
||||
```shell
|
||||
mkinitcpio -p linux
|
||||
```
|
||||
|
||||
Finally, reboot.
|
||||
|
||||
### Setting up VA-API
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Hardware_video_acceleration https://wiki.archlinux.org/index.php/Chromium#Hardware_video_acceleration
|
||||
|
||||
## Setting up touchpad gestures
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Libinput
|
42
KB/Linux/Desktop/i3.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,wm,archlinux,i3]
|
||||
---
|
||||
|
||||
# i3
|
||||
|
||||
i3 is a tiling WM for X.org. Use [[KB/Linux/Desktop/sway]] for Wayland.
|
||||
|
||||
Install i3 packages
|
||||
|
||||
```shell
|
||||
i3-gaps
|
||||
i3lock
|
||||
i3blocks
|
||||
i3status
|
||||
dunst
|
||||
picom
|
||||
ttf-font-awesome
|
||||
```
|
||||
|
||||
Install packages used as replacement from popular DE:
|
||||
|
||||
```shell
|
||||
feh
|
||||
redshift
|
||||
thunar
|
||||
thunar-volman
|
||||
thunar-archive-plugin
|
||||
thunar-media-tags-plugin
|
||||
tumbler
|
||||
ffmpegthumbnailer
|
||||
gvfs
|
||||
xarchiver
|
||||
viewnior
|
||||
gnome-keyring
|
||||
seahorse
|
||||
syncthingtray
|
||||
pasystray
|
||||
nm-applet
|
||||
gparted
|
||||
```
|
80
KB/Linux/Desktop/sway.md
Normal file
|
@ -0,0 +1,80 @@
|
|||
---
|
||||
creation date: 2022-02-06
|
||||
tags: [note,sway,i3,linux]
|
||||
---
|
||||
|
||||
# sway
|
||||
|
||||
Sway is a replacement for [[KB/Linux/Desktop/i3]] but for _Wayland_.
|
||||
|
||||
## Install
|
||||
|
||||
Install sway or related system packages
|
||||
|
||||
```shell
|
||||
mako
|
||||
grimshot
|
||||
grim
|
||||
sway
|
||||
swaybg
|
||||
swaylock
|
||||
swayidle
|
||||
slurp
|
||||
ttf-font-awesome
|
||||
waybar
|
||||
wdisplays
|
||||
wev
|
||||
wlr-randr
|
||||
wf-recorder
|
||||
rofi-lbronn-wayland
|
||||
xdg-desktop-portal-wlr [1]
|
||||
```
|
||||
|
||||
[1]: [WebRTC](https://wiki.archlinux.org/title/PipeWire#WebRTC_screen_sharing)
|
||||
|
||||
Install packages used as replacement from popular DE:
|
||||
|
||||
```shell
|
||||
simplescreenrecorder-wlroots-git
|
||||
redshift-wayland-git
|
||||
thunar
|
||||
thunar-volman
|
||||
thunar-archive-plugin
|
||||
thunar-media-tags-plugin
|
||||
tumbler
|
||||
ffmpegthumbnailer
|
||||
gvfs
|
||||
xarchiver
|
||||
viewnior
|
||||
gnome-keyring
|
||||
seahorse
|
||||
syncthingtray
|
||||
nm-applet
|
||||
gparted
|
||||
```
|
||||
|
||||
## Automatic start
|
||||
|
||||
* Edit `~/.zprofile` and replace `startx` with `exec sway` if needed
|
||||
* Ensure you have `getty@tty1` enabled
|
||||
|
||||
## Config
|
||||
|
||||
```shell
|
||||
# ~/.config/electron-flags.conf
|
||||
|
||||
--enable-features=UseOzonePlatform
|
||||
--ozone-platform=wayland
|
||||
|
||||
# ~/.zshenv
|
||||
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export XDG_CURRENT_DESKTOP=sway
|
||||
```
|
||||
|
||||
Inside Chromium based browsers _enable_ the following under `chrome://flags`
|
||||
|
||||
```shell
|
||||
WebRTC PipeWire support
|
||||
```
|
36
KB/Linux/Desktop/systemd.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,systemd,linux,archlinux]
|
||||
---
|
||||
|
||||
# systemd
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Systemd/
|
||||
|
||||
## Taming the journal's size
|
||||
|
||||
Systemd's system journal's size can go out of control. There are some things you can do to keep it in control:
|
||||
|
||||
```shell
|
||||
journalctl --vacuum-size=512M
|
||||
journalctl --vacuum-time=4weeks
|
||||
```
|
||||
|
||||
## Forwarding the journal to /dev/tty12
|
||||
|
||||
**You really want this? It's basically a leak available with a shortcut.**
|
||||
|
||||
This is very simple. Just create the file `/etc/systemd/journald.conf.d/fw-tty12.conf` and fill it like this:
|
||||
|
||||
```shell
|
||||
[Journal]
|
||||
ForwardToConsole=yes
|
||||
TTYPath=/dev/tty12
|
||||
MaxLevelConsole=info
|
||||
```
|
||||
|
||||
Then, restart the service:
|
||||
|
||||
```shell
|
||||
systemctl restart systemd-journald.service
|
||||
```
|
45
KB/Linux/Disk Speed.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,disk,archlinux]
|
||||
---
|
||||
|
||||
# Disk Speed
|
||||
|
||||
|
||||
## Setting ext4 commit frequency to 60
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Ext4#Improving_performance
|
||||
|
||||
Another way to improve performance on not-so-fast SSDs is increasing the ext4 commit frequency from every 5 seconds up to 60. Just add `commit=60` to the mount options for the boot partition in `/etc/fstab`:
|
||||
|
||||
```shell
|
||||
/dev/sda5 / ext4 rw,relatime,commit=60 0 1
|
||||
```
|
||||
|
||||
## OR enable fast commit
|
||||
|
||||
```shell
|
||||
tune2fs -l /dev/nvme0n1p4 | grep features
|
||||
tune2fs -O fast_commit /dev/nvme0n1p4
|
||||
```
|
||||
|
||||
## Maintenance for SSD
|
||||
|
||||
- `systemctl enable --now fstrim.timer` to trim SSD weekly
|
||||
|
||||
## Using the BFQ scheduler
|
||||
|
||||
Arch Wiki reference: https://wiki.archlinux.org/index.php/Improving_performance#Changing_I/O_scheduler
|
||||
|
||||
Linux notoriously gets very slow with I/O intensive operations such as moving a lot of files at once and swapping. If you have a spinning hard drive or a not-so-fast SSD, the BFQ scheduler can help improve system responsiveness during I/O intensive operations. I still use a SATA SSD for lack of a faster connector on my laptop and I have perceived significantly better overall performance by using the BFQ I/O scheduler. If your boot disk is a fast NVme SSD it's generally not the best idea to use the `bfq` scheduler for it, but since the I/O scheduler is set per-disk, it might be a good idea to use it for any spinning hard disk permanently connected to the computer (e.g. a secondary disk to store games and movies).
|
||||
|
||||
To set the BFQ scheduler, you need to specify some `udev` rules to tell Linux what scheduler to use on what kind of disks. For example, you could use the `mq-deadline` scheduler on your NVme drives and the `bfq` scheduler on your SSDs. I decided to set my rules in such a way that no scheduler is used for NVme SSDs, but `bfq` is used for everything else. To do this, create the file `/etc/udev/rules.d/60-ioschedulers.rules` and fill it in as below:
|
||||
|
||||
```shell
|
||||
# set scheduler for NVMe
|
||||
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
|
||||
# set scheduler for SSD and eMMC
|
||||
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="bfq"
|
||||
# set scheduler for rotating disks
|
||||
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
|
||||
```
|
52
KB/Linux/GNOME.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,gnome,wm]
|
||||
---
|
||||
|
||||
# GNOME
|
||||
|
||||
## Theme
|
||||
- Apps: Arc Darker
|
||||
- Cursor: Adwaita
|
||||
- Icons: Papirus
|
||||
- GNOME Terminal: https://github.com/Mayccoll/Gogh
|
||||
|
||||
## Fonts
|
||||
|
||||
Please install necessary [[KB/Linux/Desktop/Fonts]] first.
|
||||
- Interface Text: Noto Sans Regular 11
|
||||
- Document Text: Noto Sans Regular 11
|
||||
- Monospace Text: Source Code Pro 10
|
||||
- (Legacy) Window Titles: Noto Sans Bold 11
|
||||
- Hinting: Slight
|
||||
- Antialiasing: Standard (Grayscale)
|
||||
|
||||
## Extensions
|
||||
|
||||
**!!! Alternate Tab already included! Look for _shortcuts and Switch Window_ and set it to alt+tab !!!**
|
||||
|
||||
Install connector for managing extensions inside your browser
|
||||
|
||||
```shell
|
||||
gnome-browser-connector
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
"appindicatorsupport@rgcjonas.gmail.com",
|
||||
"dash-to-dock@micxgx.gmail.com",
|
||||
"launch-new-instance@gnome-shell-extensions.gcampax.github.com",
|
||||
"workspace-indicator@gnome-shell-extensions.gcampax.github.com"
|
||||
]
|
||||
```
|
||||
|
||||
`Mod+Q` overlaps with `dash-to-dock`, disable it in extension settings.
|
||||
|
||||
## Shortcuts
|
||||
|
||||
- Switch Window: alt/super + tab
|
||||
- Maybe you like to simulate a tiling WM ([[KB/Linux/Desktop/i3]] or [[KB/Linux/Desktop/sway]]) or shortcuts you're used to.
|
||||
|
||||
## dconf for details
|
||||
|
||||
Install `dconf` and use the GUI programm to edit any values in `org.gnome`, e.g. `interface` or `nautilus`. Should be self-explaining.
|
14
KB/Linux/Kernel.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
creation date: 2022-06-06
|
||||
tags: [kernel]
|
||||
---
|
||||
|
||||
# Kernel
|
||||
|
||||
## Keep kernel around during an update
|
||||
|
||||
`yay -S kernel-modules-hook`
|
||||
|
||||
## Performance
|
||||
|
||||
In general, try to keep kernel as up-to-date as possible. If you like a more smooth desktop experience, the CK flavor has some (felt) advantages over mainline.
|
45
KB/Linux/Pacman.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
creation date: 2022-07-14
|
||||
tags: [note,pacman,package,packages,hooks,hook]
|
||||
---
|
||||
|
||||
# Pacman
|
||||
|
||||
The following hooks are useful
|
||||
|
||||
```
|
||||
pacman-cleanup-hook
|
||||
pacman-mirrorlist
|
||||
```
|
||||
|
||||
In addition, configure `reflector`(install first) to periodically update mirrorlist in `/etc/xdg/reflector/reflector.conf` with the following contents
|
||||
|
||||
```shell
|
||||
# Reflector configuration file for the systemd service.
|
||||
#
|
||||
# Empty lines and lines beginning with "#" are ignored. All other lines should
|
||||
# contain valid reflector command-line arguments. The lines are parsed with
|
||||
# Python's shlex modules so standard shell syntax should work. All arguments are
|
||||
# collected into a single argument list.
|
||||
#
|
||||
# See "reflector --help" for details.
|
||||
|
||||
# Recommended Options
|
||||
|
||||
# Set the output path where the mirrorlist will be saved (--save).
|
||||
--save /etc/pacman.d/mirrorlist
|
||||
|
||||
# Select the transfer protocol (--protocol).
|
||||
--protocol https
|
||||
|
||||
# Select the country (--country).
|
||||
# Consult the list of available countries with "reflector --list-countries" and
|
||||
# select the countries nearest to you or the ones that you trust. For example:
|
||||
--country Germany
|
||||
|
||||
# Use only the most recently synchronized mirrors (--latest).
|
||||
--latest 10
|
||||
|
||||
# Sort the mirrors by synchronization time (--sort).
|
||||
--sort score
|
||||
```
|
87
KB/Linux/Server/Bootstrap.md
Normal file
|
@ -0,0 +1,87 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,install]
|
||||
---
|
||||
|
||||
# Bootstrap
|
||||
|
||||
1. Install some packages:
|
||||
|
||||
```
|
||||
pacman -S docker docker-compose pacman-contrib git reflector htop dfc ps_mem nginx certbot nano zsh zsh-syntax-highlighting nano-syntax-highlighting rsync pkgfile ntp inetutils which
|
||||
```
|
||||
|
||||
2. If you like, install the LTS kernel with `pacman -S linux-lts`
|
||||
|
||||
3. Add ssh key to login without a password
|
||||
|
||||
4. Change root shell
|
||||
|
||||
5. Change root pw
|
||||
|
||||
6. Clone dotfiles-system
|
||||
`git clone https://git.myservermanager.com/alexander.schaeferdiek/dotfiles-system.git` and sync files
|
||||
|
||||
7. Set a hostname `hostnamectl set-hostname <name>`
|
||||
|
||||
8. Copy `sshd_config` to server and restart sshd `systemctl restart sshd`
|
||||
|
||||
9. Disable and uninstall services from image install
|
||||
|
||||
```
|
||||
systemctl disable --now cloud-config.service cloud-final.service cloud-init-local.service cloud-init.service cronie.service
|
||||
pacman -Rsnc cronie
|
||||
```
|
||||
|
||||
10. Adjust pacman config `nano /etc/pacman.conf` and enable `Color, TotalDownload, CheckSpace, VerbosePkgLists` and `multilib`
|
||||
|
||||
11. Adjust network config in `/etc/systemd/network` and `/etc/resolv.conf` and `/etc/hosts`
|
||||
|
||||
```
|
||||
#
|
||||
# /etc/hosts: static lookup table for host names
|
||||
#
|
||||
127.0.0.1 localhost.localdomain localhost
|
||||
::1 localhost.localdomain localhost
|
||||
|
||||
# End of file
|
||||
```
|
||||
|
||||
12. Create user _admin_: `useradd --create-home --shell /bin/zsh --home /home/admin --groups wheel admin` and pick a password with `passwd admin`
|
||||
|
||||
13. Edit `visudo` file and make `%wheel` work with passwords
|
||||
|
||||
14. Install AUR wrapper with `admin`
|
||||
|
||||
```
|
||||
sudo su admin
|
||||
cd
|
||||
mkdir -p packages/yay-bin
|
||||
cd packages/yay-bin
|
||||
nano PKGBUILD
|
||||
|
||||
# paste contents from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=yay-bin into the file
|
||||
|
||||
makepkg -csi
|
||||
```
|
||||
|
||||
15. Install some AUR pkgs as `admin`: `reflector-timer`, `inxi`, `ctop-bin`
|
||||
|
||||
16. Make reflector and pkgfile work: `systemctl enable --now reflector.timer pkgfile-update.timer`
|
||||
|
||||
17. Follow `Setup Security Hardening.md`
|
||||
|
||||
18. Follow `Setup SSH (guard) and iptables.md`
|
||||
|
||||
19. Configure root user services for monitoring with `.scriptConfigFile.conf` files.
|
||||
|
||||
20. Copy `/root/scripts` to new server.
|
||||
|
||||
```
|
||||
# copy /etc/mail.rc
|
||||
pacman -S s-nail
|
||||
```
|
||||
|
||||
21. **Configure services, e.g. docker, nginx.**
|
||||
|
||||
22. Verify everything is working, then reboot. Verify again.
|
25
KB/Linux/Server/DNS.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,dns]
|
||||
---
|
||||
|
||||
# DNS
|
||||
|
||||
**Please use a local unbound which is even better!**
|
||||
|
||||
Start and enable
|
||||
|
||||
```
|
||||
systemd-networkd
|
||||
systemd-resolved
|
||||
```
|
||||
|
||||
If you desire that any network manager cannot change the DNS servers, then execute `sudo chattr -i /etc/resolv.conf; sudo nano /etc/resolv.conf; sudo chattr +i /etc/resolv.conf` to insert the following content:
|
||||
|
||||
```
|
||||
options timeout:1
|
||||
nameserver 80.241.218.68
|
||||
nameserver 46.182.19.48
|
||||
nameserver 8.8.8.8
|
||||
nameserver 1.1.1.1
|
||||
```
|
26
KB/Linux/Server/Domains.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,archlinux,linux,domains]
|
||||
---
|
||||
|
||||
# Domains
|
||||
|
||||
Add new domains
|
||||
|
||||
1. Add new listen inside `systemd-boot`
|
||||
2. Set `AAAA` record in your DNS
|
||||
3. Set `A` record in your DNS
|
||||
4. Set reverse DNS for the `AAAA` record
|
||||
5. Adapt your `nginx.conf` so that you have a valid `80` listen and later generate certificates for it
|
||||
|
||||
## IPv6
|
||||
|
||||
Hex (0-9, A-F)
|
||||
|
||||
Address = 8 blocks * 16bit = 128bit
|
||||
subnet /128 = one address
|
||||
subnet /112 = 65535 addresses
|
||||
=> 65535 addresses _per_ block
|
||||
|
||||
### Addresses
|
||||
Ensure that each address has a valid `AAAA` reverse DNS entry.
|
18
KB/Linux/Server/Hetzner/Storagebox.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,hetzner,storage,disk]
|
||||
---
|
||||
|
||||
# Storagebox
|
||||
|
||||
Create a compatible ssh key and transfer to the user
|
||||
|
||||
```
|
||||
ssh-keygen-rsa id_rsa
|
||||
|
||||
ssh-keygen -e -f .ssh/id_rsa.pub | grep -v "Comment:" > .ssh/id_rsa_rfc.pub
|
||||
cat .ssh/id_rsa.pub >> storagebox_authorized_keys
|
||||
cat .ssh/id_rsa_rfc.pub >> storagebox_authorized_keys
|
||||
|
||||
echo -e "mkdir .ssh \n chmod 700 .ssh \n put storagebox_authorized_keys .ssh/authorized_keys \n chmod 600 .ssh/authorized_keys" | sftp ...@....your-storagebox.de
|
||||
```
|
22
KB/Linux/Server/Hetzner/Upgrades.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux]
|
||||
---
|
||||
|
||||
# Upgrades
|
||||
|
||||
This assumes, that you have `dotfiles-system` installed.
|
||||
|
||||
Upgrading the VM includes the following sub tasks:
|
||||
|
||||
* host
|
||||
* host web applications
|
||||
* docker deployments
|
||||
|
||||
Let's dive into details about each of them.
|
||||
|
||||
## Updating the host
|
||||
Login as `admin` and do `pkg-upgrade-full`.
|
||||
|
||||
## Updating docker deployments
|
||||
Login as `root` and do `docker_compose_update` which will update all docker deployments. Ensure to clean up unused images, networks and volumes afterwards.
|
111
KB/Linux/Server/PostgreSQL.md
Normal file
|
@ -0,0 +1,111 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,postgres,database,postgresql,psql,archlinux]
|
||||
---
|
||||
|
||||
# PostgreSQL
|
||||
|
||||
## Commonly used
|
||||
|
||||
```
|
||||
-- list all users
|
||||
\du
|
||||
|
||||
-- list all databases
|
||||
\l
|
||||
|
||||
-- list all (public.) tables in a db
|
||||
\dt+
|
||||
|
||||
-- create db
|
||||
CREATE DATABASE yourdbname;
|
||||
|
||||
-- new user/new db
|
||||
CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';
|
||||
GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;
|
||||
|
||||
-- existing db
|
||||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO youruser;
|
||||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO youruser;
|
||||
REASSIGN OWNED BY olduser TO newuser;
|
||||
|
||||
-- change owner
|
||||
ALTER DATABASE name OWNER TO youruser;
|
||||
|
||||
-- revoke from old user
|
||||
revoke all privileges on database db from "olduser";
|
||||
|
||||
-- rename db
|
||||
ALTER DATABASE db RENAME TO newdb;
|
||||
|
||||
-- drop all owned
|
||||
DROP OWNED BY <user>
|
||||
|
||||
-- revoke and drop
|
||||
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM <user>;
|
||||
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM <user>;
|
||||
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM <user>;
|
||||
DROP USER <user>;
|
||||
```
|
||||
|
||||
## Updating major versions
|
||||
|
||||
```
|
||||
systemctl start postgresql.service // if not already running
|
||||
chown postgres:postgres /var/lib/postgres
|
||||
sudo -i -u postgres
|
||||
pg_dumpall >> old_backup.sql
|
||||
exit
|
||||
systemctl stop postgresql.service
|
||||
mv /var/lib/postgres/data /var/lib/postgres/olddata
|
||||
pacman -Syyu
|
||||
mkdir /var/lib/postgres/data
|
||||
chown postgres:postgres /var/lib/postgres/data
|
||||
sudo -i -u postgres
|
||||
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
|
||||
exit
|
||||
systemctl daemon-reload
|
||||
systemctl start postgresql.service
|
||||
sudo -i -u postgres
|
||||
psql -f old_backup.sql postgres // if postgis is used, the lib has to be accessible before importing
|
||||
exit
|
||||
```
|
||||
|
||||
## Updating major versions in docker(-compose)
|
||||
|
||||
* Backup existing instance:
|
||||
|
||||
```
|
||||
// host
|
||||
docker-compose down
|
||||
cp -r <data-dir> <data-dir-bak>
|
||||
docker-compose up -d
|
||||
docker exec -it <container-name> /bin/bash
|
||||
|
||||
// container
|
||||
pg_dumpall >> /old_backup.sql
|
||||
exit
|
||||
|
||||
// host
|
||||
docker cp <container-name>:/old_backup.sql .
|
||||
docker-compose down
|
||||
rm -rf <data-dir>
|
||||
```
|
||||
* Change major version tag of container, e.g. edit `docker-compose`
|
||||
* Restore old database dump
|
||||
```
|
||||
// host
|
||||
docker-compose up -d
|
||||
docker cp old_backup.sql <container-name>:/old_backup.sql
|
||||
docker exec -it <container-name> /bin/bash
|
||||
|
||||
// container (leave out -U if chowned in container user is the correct one)
|
||||
psql -U <user-access-to-postgres, e.g. postgres> -f old_backup.sql
|
||||
rm /old_backup.sql
|
||||
exit
|
||||
|
||||
// host
|
||||
docker-compose down
|
||||
docker-compose up -d
|
||||
```
|
||||
* Verify applications and delete `<data-dir-bak>` and the dumped `.sql` file
|
46
KB/Linux/Server/Remote unlocking at boot.md
Normal file
|
@ -0,0 +1,46 @@
|
|||
---
|
||||
creation date: 2022-07-18
|
||||
tags: [ssh,cryptsetup,remote,unlock,crypt]
|
||||
---
|
||||
|
||||
# Remote unlocking at boot
|
||||
|
||||
Guide borrowed from https://linux.fernandocejas.com/docs/guides/decrypt-luks-partition-remotely-via-ssh.
|
||||
|
||||
1. Install `pacman -S mkinitcpio-systemd-tool busybox cryptsetup openssh tinyssh tinyssh-convert mc`
|
||||
2. Edit `/etc/mkinitcpio.conf`
|
||||
|
||||
```shell
|
||||
HOOKS=(.... systemd systemd-tool)
|
||||
|
||||
# find out network device with lspci -k looking for "Kernel driver in use: ..."
|
||||
MODULES=(r8169)
|
||||
```
|
||||
3. Copy _root_ only entry `/etc/fstab` to `/etc/mkinitcpio-systemd-tool/config/fstab`, e.g. with `cat /etc/fstab >> /etc/mkinitcpio-systemd-tool/config/fstab` and remove any unnecessary (non-root) definitions
|
||||
4. Copy _cryptsetup_ entries from `/etc/crypttab` to `/etc/mkinitcpio-systemd-tool/config/crypttab`, e.g. with `cat /etc/crypttab >> /etc/mkinitcpio-systemd-tool/config/crypttab`. Remember to set method to `none` (for password ask)
|
||||
5. Enable necessary `systemd-tool` services
|
||||
|
||||
```shell
|
||||
systemctl enable initrd-cryptsetup.path
|
||||
systemctl enable initrd-tinysshd
|
||||
systemctl enable initrd-debug-progs
|
||||
systemctl enable initrd-sysroot-mount
|
||||
```
|
||||
6. Adapt `/etc/mkinitcpio-systemd-tool/network/initrd-network.network` to your liking, but ensure that you probably want `eth*` as match for ethernet and you probably want to assign a fixed IP address
|
||||
|
||||
```shell
|
||||
[Match]
|
||||
Name=eth*
|
||||
|
||||
[Network]
|
||||
Address=192.168.1.2/24
|
||||
Gateway=192.168.1.1
|
||||
DNS=1.1.1.1
|
||||
```
|
||||
|
||||
7. Only ED25519 is supported by tinyssh, so ensure to generate one and add the public key to remote's `/root/.ssh/authorized_keys`
|
||||
|
||||
```shell
|
||||
ssh-keygen -t ed25519 -C "remote-unlocking-HOSTNAME@local-hostname"
|
||||
```
|
||||
9. Generate initramfs with `mkinitcpio -P` and watch out for errors, fix them before reboot!
|
63
KB/Linux/Server/SSH Guard, iptables.md
Normal file
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,archlinux,linux,security,ssh,iptables]
|
||||
---
|
||||
|
||||
# SSH Guard, iptables
|
||||
|
||||
## SSH
|
||||
Disable weak ciphers by adding the following to the `sshd_config` file:
|
||||
|
||||
```
|
||||
# Disable weak ciphers
|
||||
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256,diffie-hellman-group18-sha512
|
||||
MACs umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
|
||||
HostKeyAlgorithms ssh-rsa,rsa-sha2-256,rsa-sha2-512
|
||||
```
|
||||
|
||||
Be sure to disable password auth (`PasswordAuthentication no`) and set `PermitRootLogin yes`
|
||||
|
||||
## iptables
|
||||
|
||||
Install `sshguard`. To function properly, add a chain for it (ipv4 and ipv6). Don't forget to restart docker daemon if services don't work properly. Docker manipulates firewall rules.
|
||||
|
||||
Ports `22` and `2222` will be monitored in this example.
|
||||
|
||||
Also see [here](https://wiki.archlinux.org/index.php/Sshguard#iptables).
|
||||
|
||||
```sh
|
||||
# IPv4
|
||||
iptables -N sshguard
|
||||
iptables -A INPUT -m multiport -p tcp --destination-ports 22,2222 -j sshguard
|
||||
iptables-save > /etc/iptables/iptables.rules
|
||||
|
||||
# IPv6
|
||||
ip6tables -N sshguard
|
||||
ip6tables -A INPUT -m multiport -p tcp --destination-ports 22,2222 -j sshguard
|
||||
ip6tables-save > /etc/iptables/ip6tables.rules
|
||||
```
|
||||
|
||||
Start with `systemctl enable --now sshguard` or restart afterwards with `systemctl restart sshguard` to apply or `ExecStartPre=` above in sshguard's systemd file.
|
||||
|
||||
```sh
|
||||
ExecStartPre=/bin/bash -c '(while ! nc -z -v -w1 localhost 2222 > /dev/null; do echo "Waiting for port 2222 to open..."; sleep 15; done); sleep 10'
|
||||
```
|
||||
|
||||
or create the following file and execute on every reboot with a certain, e.g. with
|
||||
|
||||
```sh
|
||||
[Timer]
|
||||
OnBootSec=1min
|
||||
```
|
||||
|
||||
```sh
|
||||
# IPv4
|
||||
iptables -N sshguard && \
|
||||
iptables -A INPUT -m multiport -p tcp --destination-ports 22,2222 -j sshguard && \
|
||||
iptables-save > /etc/iptables/iptables.rules
|
||||
|
||||
# IPv6
|
||||
ip6tables -N sshguard && \
|
||||
ip6tables -A INPUT -m multiport -p tcp --destination-ports 22,2222 -j sshguard && \
|
||||
ip6tables-save > /etc/iptables/ip6tables.rules
|
||||
```
|
83
KB/Linux/Server/Security hardening.md
Normal file
|
@ -0,0 +1,83 @@
|
|||
---
|
||||
creation date: 2022-01-08
|
||||
tags: [note,linux,archlinux,security,hardening]
|
||||
---
|
||||
|
||||
# Security hardening
|
||||
|
||||
## ssh
|
||||
`ssh-guard` allowed.
|
||||
|
||||
## nginx
|
||||
|
||||
Execute the following
|
||||
|
||||
```
|
||||
mkdir -p /etc/nginx/ssl
|
||||
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
|
||||
```
|
||||
|
||||
In `nginx.conf`, set the following inside the `http` block:
|
||||
|
||||
```
|
||||
# security hardened
|
||||
server_tokens off;
|
||||
```
|
||||
|
||||
|
||||
For each `server` block, set the following
|
||||
|
||||
```
|
||||
listen 443 ssl http2;
|
||||
|
||||
# enable session resumption to improve https performance
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
|
||||
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
|
||||
|
||||
# enables server-side protection from BEAST attacks
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
# disable SSLv3(enabled by default since nginx 0.8.19) since it's less secure then TLS http://en.wikipedia.org/wiki/Secure_Sockets_Layer#SSL_3.0
|
||||
ssl_protocols TLSv1.2;
|
||||
|
||||
# ciphers chosen for forward secrecy and compatibility
|
||||
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
|
||||
|
||||
# security hardened
|
||||
add_header X-Frame-Options SAMEORIGIN;
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
add_header Content-Security-Policy "https; default-src 'self'; script-src 'self'; img-src 'self' data:;";
|
||||
# OR: add_header Content-Security-Policy "https; default-src 'self'; script-src 'self'";
|
||||
|
||||
# no access logs
|
||||
access_log off;
|
||||
```
|
||||
|
||||
## PHP
|
||||
|
||||
```
|
||||
session.cookie_secure = true
|
||||
session.use_only_cookies = 1
|
||||
session.cookie_httponly = true
|
||||
```
|
||||
|
||||
## journald
|
||||
|
||||
Set maximum journal retention in `/etc/systemd/journald.conf`:
|
||||
|
||||
```
|
||||
MaxRetentionSec=604800
|
||||
MaxFileSec=86400
|
||||
```
|
||||
|
||||
This makes logs only available for seven days and rotate each day.
|
||||
|
||||
Apply changes directly with `journalctl --vacuum-time=7d`.
|
||||
|
||||
## Andere Dienste
|
||||
|
||||
Set log level to warn or error
|
15
KB/Linux/Server/sshguard-iptables/sshguard-iptables
Normal file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
echo "Applying iptables rules for sshguard";
|
||||
|
||||
# IPv4
|
||||
iptables -N sshguard;
|
||||
iptables -A INPUT -m multiport -p tcp --destination-ports 22,2222 -j sshguard;
|
||||
iptables-save > /etc/iptables/iptables.rules;
|
||||
|
||||
# IPv6
|
||||
ip6tables -N sshguard;
|
||||
ip6tables -A INPUT -m multiport -p tcp --destination-ports 22,2222 -j sshguard;
|
||||
ip6tables-save > /etc/iptables/ip6tables.rules;
|
||||
|
||||
systemctl restart sshguard;
|
10
KB/Linux/Server/sshguard-iptables/sshguard-iptables.service
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Run sshguard-iptables
|
||||
OnFailure=systemd_failure_notify@%n.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/bash /root/scripts/sshguard-iptables
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=Run sshguard-iptables
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
53
KB/Linux/Server/unbound/scripts/unbound_update_adservers
Normal file
|
@ -0,0 +1,53 @@
|
|||
#!/bin/bash
|
||||
|
||||
# config
|
||||
hostname=$(hostname)
|
||||
mail_from="monitoring@myservermanager.com";
|
||||
mail_to="monitoring@myservermanager.com";
|
||||
mail_enabled="true"
|
||||
|
||||
# helper
|
||||
send_error() {
|
||||
local CONTENTS=$1;
|
||||
# if enabled, send mail on error
|
||||
if [ $mail_enabled == 'true' ]; then
|
||||
SUBJECT="[$hostname] Failed to update unbound adservers";
|
||||
echo "${CONTENTS}" | mailx -Ssendwait -s "${SUBJECT}" $mail_to;
|
||||
fi
|
||||
echo "${CONTENTS}";
|
||||
}
|
||||
|
||||
# main
|
||||
bURL="https://raw.githubusercontent.com/oznu/dns-zone-blacklist/master/unbound/unbound-nxdomain.blacklist"
|
||||
blacklist="$(curl -s -L --fail "$bURL")"
|
||||
sha256="$(curl -s -L --fail "${bURL}.checksum")"
|
||||
|
||||
test -n "$blacklist"
|
||||
res=$?;
|
||||
if [ $res != 0 ]; then
|
||||
send_error "Cannot download blacklist.";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
|
||||
test -n "$sha256"
|
||||
res=$?;
|
||||
if [ $res != 0 ]; then
|
||||
send_error "Cannot download checksum.";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
d_sha256="$(echo -n "$blacklist" | sha256sum)"
|
||||
test "${d_sha256#$sha256}" != "$d_sha256"
|
||||
res=$?;
|
||||
if [ $res != 0 ]; then
|
||||
send_error "Checksum doesn't match the downloaded file";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
echo "$blacklist" > /etc/unbound/adservers
|
||||
res=$?;
|
||||
if [ $res != 0 ]; then
|
||||
send_error "Cannot apply file";
|
||||
exit 1;
|
||||
fi
|
24
KB/Linux/Server/unbound/scripts/unbound_update_root_hints
Normal file
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
hostname=$(hostname)
|
||||
mail_from="monitoring@myservermanager.com";
|
||||
mail_to="monitoring@myservermanager.com";
|
||||
mail_enabled="true"
|
||||
|
||||
# action
|
||||
wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /etc/unbound/root.hints;
|
||||
res=$?;
|
||||
|
||||
if [ $mail_enabled == 'true' ]; then
|
||||
|
||||
resText="Successfully updated";
|
||||
if [ $res != 0 ]; then
|
||||
resText="Failed to update"
|
||||
fi
|
||||
|
||||
SUBJECT="[$hostname] ${resText} unbound root.hints";
|
||||
CONTENTS="${resText} unbound root.hints.";
|
||||
echo "${CONTENTS}" | mailx -Ssendwait -s "${SUBJECT}" $mail_to;
|
||||
fi
|
||||
|
||||
exit $res;
|
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Run unbound_update_adservers
|
||||
OnFailure=systemd_failure_notify@%n.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/bash /root/scripts/unbound_update_adservers
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
|
@ -0,0 +1,9 @@
|
|||
[Unit]
|
||||
Description=Run unbound_update_adservers
|
||||
|
||||
[Timer]
|
||||
OnCalendar=daily
|
||||
Persistent=false
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|