1
0
Fork 0

Initial commit of knowledge base

This commit is contained in:
Alexander Schäferdiek 2022-09-04 14:54:22 +02:00
commit 0e5f0fc3eb
109 changed files with 71348 additions and 0 deletions

25
.obsidian/app.json vendored Normal file
View 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
View file

@ -0,0 +1,3 @@
{
"baseFontSize": 16
}

6
.obsidian/community-plugins.json vendored Normal file
View file

@ -0,0 +1,6 @@
[
"dataview",
"templater-obsidian",
"markdown-table-editor",
"obsidian-git"
]

15
.obsidian/core-plugins.json vendored Normal file
View 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
View file

@ -0,0 +1,6 @@
{
"folder": "Daily Notes",
"template": "_Templates/Daily Note Template",
"autorun": false,
"format": ""
}

22
.obsidian/graph.json vendored Normal file
View 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
View 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
View file

@ -0,0 +1,4 @@
{
"askBeforeMerging": true,
"template": "_Templates/Note Template"
}

21
.obsidian/plugins/dataview/data.json vendored Normal file
View 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

File diff suppressed because one or more lines are too long

View 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
View 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: ")";
}

File diff suppressed because it is too large Load diff

View 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
}

View 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;
}

View 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

File diff suppressed because one or more lines are too long

View 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"
}

View 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;
}

View 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": [
""
]
}

File diff suppressed because one or more lines are too long

View 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
}

View 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
View file

@ -0,0 +1,3 @@
{
"items": []
}

5
.obsidian/switcher.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"showExistingOnly": true,
"showAttachments": true,
"showAllFileTypes": true
}

3
.obsidian/templates.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"folder": "_Templates"
}

116
.obsidian/workspace vendored Normal file
View 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"
]
}

View 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
View 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.

View 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";

View 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";

View 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

View 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
View 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
View 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 .............
```

View 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
```

View 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.

View 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`.

View 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

View 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
View 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]].

View 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
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

View 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)

View 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
```

View 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=

View 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

View file

@ -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

View 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=

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View file

@ -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

View 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
View 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.

View 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
View 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
View 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
View 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
```

View 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
View 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
View 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
View 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
View 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
```

View 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
View 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
```

View 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.

View 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
```

View 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.

View 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

View 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!

View 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
```

View 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

View 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;

View 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

View file

@ -0,0 +1,8 @@
[Unit]
Description=Run sshguard-iptables
[Timer]
OnBootSec=1min
[Install]
WantedBy=timers.target

View 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

View 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;

View file

@ -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

View file

@ -0,0 +1,9 @@
[Unit]
Description=Run unbound_update_adservers
[Timer]
OnCalendar=daily
Persistent=false
[Install]
WantedBy=timers.target

Some files were not shown because too many files have changed in this diff Show more