Add XDG config files
This commit is contained in:
parent
9fc8f8ae4f
commit
ff6e834e44
84 changed files with 68895 additions and 1 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1,3 @@
|
|||
.dots/
|
||||
btop/btop.log
|
||||
|
||||
|
|
BIN
BetterDiscord/data/betterdiscord.asar
Normal file
BIN
BetterDiscord/data/betterdiscord.asar
Normal file
Binary file not shown.
0
BetterDiscord/data/stable/custom.css
Normal file
0
BetterDiscord/data/stable/custom.css
Normal file
12
BetterDiscord/data/stable/misc.json
Normal file
12
BetterDiscord/data/stable/misc.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"version": "1.9.6",
|
||||
"drawerStates": {
|
||||
"settings": {
|
||||
"addons": false,
|
||||
"customcss": false,
|
||||
"editor": false,
|
||||
"window": false,
|
||||
"developer": false
|
||||
}
|
||||
}
|
||||
}
|
23
BetterDiscord/data/stable/plugins.json
Normal file
23
BetterDiscord/data/stable/plugins.json
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"PluginRepo": true,
|
||||
"BDFDB": true,
|
||||
"ZeresPluginLibrary": false,
|
||||
"BetterAudioPlayer": false,
|
||||
"CallTimeCounter": true,
|
||||
"BetterRoleColors": false,
|
||||
"SplitLargeMessages": false,
|
||||
"BetterVolume": false,
|
||||
"TypingUsersAvatars": true,
|
||||
"ThemeRepo": false,
|
||||
"AutoIdleOnAFK": true,
|
||||
"BetterAnimations": false,
|
||||
"BetterBotTags": false,
|
||||
"BetterInvites": false,
|
||||
"BetterMediaPlayer": false,
|
||||
"BetterNsfwTag": false,
|
||||
"CharCounter": false,
|
||||
"ActivityIcons": false,
|
||||
"HideDisabledEmojis": true,
|
||||
"WhoReacted": false,
|
||||
"TeX": true
|
||||
}
|
37
BetterDiscord/data/stable/settings.json
Normal file
37
BetterDiscord/data/stable/settings.json
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"general": {
|
||||
"voiceDisconnect": true,
|
||||
"showToasts": true,
|
||||
"mediaKeys": false
|
||||
},
|
||||
"addons": {
|
||||
"addonErrors": true,
|
||||
"editAction": "detached"
|
||||
},
|
||||
"customcss": {
|
||||
"customcss": true,
|
||||
"liveUpdate": false,
|
||||
"openAction": "settings"
|
||||
},
|
||||
"editor": {
|
||||
"lineNumbers": true,
|
||||
"minimap": true,
|
||||
"hover": true,
|
||||
"quickSuggestions": true,
|
||||
"fontSize": 14,
|
||||
"renderWhitespace": "selection"
|
||||
},
|
||||
"window": {
|
||||
"transparency": true,
|
||||
"removeMinimumSize": false,
|
||||
"frame": false
|
||||
},
|
||||
"developer": {
|
||||
"debugLogs": false,
|
||||
"devTools": false,
|
||||
"debuggerHotkey": false,
|
||||
"reactDevTools": false,
|
||||
"inspectElement": false,
|
||||
"devToolsWarning": false
|
||||
}
|
||||
}
|
6
BetterDiscord/data/stable/themes.json
Normal file
6
BetterDiscord/data/stable/themes.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"Frosted Glass": false,
|
||||
"Dark Matter": false,
|
||||
"Discord+": false,
|
||||
"ClearVision": true
|
||||
}
|
25
BetterDiscord/plugins/0BDFDB.config.json
Normal file
25
BetterDiscord/plugins/0BDFDB.config.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"all": {
|
||||
"changeLogs": {
|
||||
"BDFDB": "3.5.3",
|
||||
"BetterNsfwTag": "1.3.2",
|
||||
"CharCounter": "1.6.2",
|
||||
"PluginRepo": "2.5.4",
|
||||
"SplitLargeMessages": "1.8.0",
|
||||
"ThemeRepo": "2.4.8"
|
||||
},
|
||||
"choices": {
|
||||
"toastPosition": "right"
|
||||
},
|
||||
"general": {
|
||||
"shareData": true,
|
||||
"showToasts": true,
|
||||
"showSupportBadges": false,
|
||||
"useChromium": false
|
||||
},
|
||||
"hashes": {
|
||||
"0BDFDB.data.json": "b6093b5b3b9b66f4ea01370fe723f0834b6739c4",
|
||||
"0BDFDB.raw.css": "8c083e2a87a82aded5f3b2e27fb8b2f816b5f74a"
|
||||
}
|
||||
}
|
||||
}
|
5508
BetterDiscord/plugins/0BDFDB.data.json
Normal file
5508
BetterDiscord/plugins/0BDFDB.data.json
Normal file
File diff suppressed because it is too large
Load diff
8690
BetterDiscord/plugins/0BDFDB.plugin.js
Normal file
8690
BetterDiscord/plugins/0BDFDB.plugin.js
Normal file
File diff suppressed because it is too large
Load diff
1647
BetterDiscord/plugins/0BDFDB.raw.css
Normal file
1647
BetterDiscord/plugins/0BDFDB.raw.css
Normal file
File diff suppressed because it is too large
Load diff
6325
BetterDiscord/plugins/0PluginLibrary.plugin.js
Normal file
6325
BetterDiscord/plugins/0PluginLibrary.plugin.js
Normal file
File diff suppressed because it is too large
Load diff
9
BetterDiscord/plugins/ActivityIcons.config.json
Normal file
9
BetterDiscord/plugins/ActivityIcons.config.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"settings": {
|
||||
"normalIconBehavior": 0
|
||||
},
|
||||
"currentVersionInfo": {
|
||||
"version": "1.2.11",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
6
BetterDiscord/plugins/AutoIdleOnAFK.config.json
Normal file
6
BetterDiscord/plugins/AutoIdleOnAFK.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "0.4.0",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
442
BetterDiscord/plugins/AutoIdleOnAFK.plugin.js
Normal file
442
BetterDiscord/plugins/AutoIdleOnAFK.plugin.js
Normal file
|
@ -0,0 +1,442 @@
|
|||
/**
|
||||
* @name AutoIdleOnAFK
|
||||
* @description Automatically updates your discord status to 'idle' when you haven't opened your discord client for more than 5 minutes.
|
||||
Plugin only works when your status is 'online' and you are not in a voice channel.
|
||||
|
||||
For Bugs or Feature Requests open an issue on my Github
|
||||
* @version 0.4.0
|
||||
* @author RoguedBear
|
||||
* @authorLink https://github.com/RoguedBear
|
||||
* @website https://github.com/RoguedBear/BetterDiscordPlugin-AutoIdleOnAFK
|
||||
* @source https://raw.githubusercontent.com/RoguedBear/BetterDiscordPlugin-AutoIdleOnAFK/main/release/AutoIdleOnAFK.plugin.js
|
||||
*/
|
||||
/*@cc_on
|
||||
@if (@_jscript)
|
||||
|
||||
// Offer to self-install for clueless users that try to run this directly.
|
||||
var shell = WScript.CreateObject("WScript.Shell");
|
||||
var fs = new ActiveXObject("Scripting.FileSystemObject");
|
||||
var pathPlugins = shell.ExpandEnvironmentStrings("%APPDATA%\\BetterDiscord\\plugins");
|
||||
var pathSelf = WScript.ScriptFullName;
|
||||
// Put the user at ease by addressing them in the first person
|
||||
shell.Popup("It looks like you've mistakenly tried to run me directly. \n(Don't do that!)", 0, "I'm a plugin for BetterDiscord", 0x30);
|
||||
if (fs.GetParentFolderName(pathSelf) === fs.GetAbsolutePathName(pathPlugins)) {
|
||||
shell.Popup("I'm in the correct folder already.", 0, "I'm already installed", 0x40);
|
||||
} else if (!fs.FolderExists(pathPlugins)) {
|
||||
shell.Popup("I can't find the BetterDiscord plugins folder.\nAre you sure it's even installed?", 0, "Can't install myself", 0x10);
|
||||
} else if (shell.Popup("Should I copy myself to BetterDiscord's plugins folder for you?", 0, "Do you need some help?", 0x34) === 6) {
|
||||
fs.CopyFile(pathSelf, fs.BuildPath(pathPlugins, fs.GetFileName(pathSelf)), true);
|
||||
// Show the user where to put plugins in the future
|
||||
shell.Exec("explorer " + pathPlugins);
|
||||
shell.Popup("I'm installed!", 0, "Successfully installed", 0x40);
|
||||
}
|
||||
WScript.Quit();
|
||||
|
||||
@else@*/
|
||||
const config = {
|
||||
info: {
|
||||
name: "AutoIdleOnAFK",
|
||||
authors: [
|
||||
{
|
||||
name: "RoguedBear",
|
||||
github_username: "RoguedBear",
|
||||
link: "https://github.com/RoguedBear"
|
||||
}
|
||||
],
|
||||
version: "0.4.0",
|
||||
description: "Automatically updates your discord status to 'idle' when you haven't opened your discord client for more than 5 minutes.\nPlugin only works when your status is 'online' and you are not in a voice channel. \n\nFor Bugs or Feature Requests open an issue on my Github",
|
||||
github: "https://github.com/RoguedBear/BetterDiscordPlugin-AutoIdleOnAFK",
|
||||
github_raw: "https://raw.githubusercontent.com/RoguedBear/BetterDiscordPlugin-AutoIdleOnAFK/main/release/AutoIdleOnAFK.plugin.js"
|
||||
},
|
||||
changelog: [
|
||||
{
|
||||
type: "added",
|
||||
title: "Added a setting to optionally ignore VC state when going AFK",
|
||||
items: [
|
||||
"Earlier if you were in a VC you couldn't go in AFK mode. Now you can toggle a setting to ignore whether you are in VC or not before going AFK.",
|
||||
"default value: off"
|
||||
]
|
||||
}
|
||||
],
|
||||
main: "index.js",
|
||||
DEBUG: false,
|
||||
DEBUG_ActuallyChangeStatus: false,
|
||||
defaultConfig: [
|
||||
{
|
||||
type: "radio",
|
||||
name: "Change Status To:",
|
||||
note: "the status selected will be switched to when AFK. default: Idle",
|
||||
id: "afkStatus",
|
||||
value: "idle",
|
||||
options: [
|
||||
{
|
||||
name: "Idle",
|
||||
value: "idle"
|
||||
},
|
||||
{
|
||||
name: "Invisible",
|
||||
value: "invisible"
|
||||
},
|
||||
{
|
||||
name: "Do Not Disturb",
|
||||
value: "dnd"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
type: "slider",
|
||||
name: "AFK Timeout (minutes)",
|
||||
note: "minutes to wait before changing your status to Idle/Invisible",
|
||||
id: "afkTimeout",
|
||||
value: 5,
|
||||
defaultValue: 5,
|
||||
min: 5,
|
||||
max: 30,
|
||||
units: "min",
|
||||
markers: [
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30
|
||||
]
|
||||
},
|
||||
{
|
||||
type: "slider",
|
||||
name: "Back To Online Delay (Grace/Cooldown Period)",
|
||||
note: "seconds to wait before changing your status back to Online. if you close or unfocus discord window, status will not be changed",
|
||||
id: "backToOnlineDelay",
|
||||
defaultValue: 10,
|
||||
value: 10,
|
||||
min: 5,
|
||||
max: 120,
|
||||
units: "s",
|
||||
markers: [
|
||||
5,
|
||||
10,
|
||||
30,
|
||||
60,
|
||||
90,
|
||||
120
|
||||
]
|
||||
},
|
||||
{
|
||||
type: "switch",
|
||||
name: "Ignore VC state when going AFK",
|
||||
note: "Allows going to Idle mode even when you are in a VC. default: off",
|
||||
id: "ignoreVCState",
|
||||
value: false,
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
type: "switch",
|
||||
name: "Always Revert To Online",
|
||||
note: "Come back online even if this plugin didn't change your status. Useful for multiple devices.",
|
||||
id: "alwaysOnline",
|
||||
value: false,
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
type: "switch",
|
||||
name: "Show toast messages?",
|
||||
note: "toggles the visibility of \"Changing status back to online\" toast message",
|
||||
id: "showToasts",
|
||||
defaultValue: true,
|
||||
value: true
|
||||
}
|
||||
]
|
||||
};
|
||||
class Dummy {
|
||||
constructor() {this._config = config;}
|
||||
start() {}
|
||||
stop() {}
|
||||
}
|
||||
|
||||
if (!global.ZeresPluginLibrary) {
|
||||
BdApi.showConfirmationModal("Library Missing", `The library plugin needed for ${config.name ?? config.info.name} is missing. Please click Download Now to install it.`, {
|
||||
confirmText: "Download Now",
|
||||
cancelText: "Cancel",
|
||||
onConfirm: () => {
|
||||
require("request").get("https://betterdiscord.app/gh-redirect?id=9", async (err, resp, body) => {
|
||||
if (err) return require("electron").shell.openExternal("https://betterdiscord.app/Download?id=9");
|
||||
if (resp.statusCode === 302) {
|
||||
require("request").get(resp.headers.location, async (error, response, content) => {
|
||||
if (error) return require("electron").shell.openExternal("https://betterdiscord.app/Download?id=9");
|
||||
await new Promise(r => require("fs").writeFile(require("path").join(BdApi.Plugins.folder, "0PluginLibrary.plugin.js"), content, r));
|
||||
});
|
||||
}
|
||||
else {
|
||||
await new Promise(r => require("fs").writeFile(require("path").join(BdApi.Plugins.folder, "0PluginLibrary.plugin.js"), body, r));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = !global.ZeresPluginLibrary ? Dummy : (([Plugin, Api]) => {
|
||||
const plugin = (Plugin, Library) => {
|
||||
const { Logger, DiscordModules } = Library;
|
||||
const {
|
||||
SelectedChannelStore: { getVoiceChannelId },
|
||||
} = DiscordModules;
|
||||
|
||||
// Logger.info("VC: " + getVoiceChannelId());
|
||||
|
||||
const {
|
||||
Webpack,
|
||||
Webpack: { Filters },
|
||||
} = BdApi;
|
||||
|
||||
const UserSettingsProtoStore = BdApi.Webpack.getModule(
|
||||
(m) =>
|
||||
m &&
|
||||
typeof m.getName == "function" &&
|
||||
m.getName() == "UserSettingsProtoStore" &&
|
||||
m,
|
||||
{ first: true, searchExports: true }
|
||||
);
|
||||
|
||||
const UserSettingsProtoUtils = BdApi.Webpack.getModule(
|
||||
(m) =>
|
||||
m.ProtoClass &&
|
||||
m.ProtoClass.typeName.endsWith(".PreloadedUserSettings"),
|
||||
{ first: true, searchExports: true }
|
||||
);
|
||||
|
||||
var DEBUG = false;
|
||||
function log_debug(module, ...message) {
|
||||
if (DEBUG !== true) {
|
||||
return;
|
||||
} else {
|
||||
Logger.debug(module, ...message);
|
||||
}
|
||||
}
|
||||
|
||||
return class AutoIdleOnAFK extends Plugin {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.getSettingsPanel = () => {
|
||||
return this.buildSettingsPanel().getElement();
|
||||
};
|
||||
|
||||
// Some instance variables
|
||||
this.afkTimeoutID = undefined; // timeout set by onBlur
|
||||
this.backFromAFKTimeoutID = undefined; // timeout set by onFocus
|
||||
// key used as a flag to detect if afk was set by the plugin or manually by user
|
||||
this.keyIdleSetByPlugin = "IdleSetByPlugin";
|
||||
|
||||
this.OnBlurBounded = this.onBlurFunction.bind(this);
|
||||
this.boundOnFocusBounded = this.onFocusFunction.bind(this);
|
||||
}
|
||||
|
||||
onStart() {
|
||||
if (this._config.DEBUG === true) {
|
||||
DEBUG = true;
|
||||
log_debug(this);
|
||||
log_debug("Current status: " + this.currentStatus());
|
||||
log_debug("In Voice Channel: " + this.inVoiceChannel());
|
||||
log_debug(
|
||||
"onlineStatusAndNotInVC: " + this.onlineStatusAndNotInVC()
|
||||
);
|
||||
}
|
||||
window.addEventListener("blur", this.OnBlurBounded);
|
||||
window.addEventListener("focus", this.boundOnFocusBounded);
|
||||
}
|
||||
|
||||
onStop() {
|
||||
clearTimeout(this.afkTimeoutID);
|
||||
clearTimeout(this.backFromAFKTimeoutID);
|
||||
window.removeEventListener("blur", this.OnBlurBounded);
|
||||
window.removeEventListener("focus", this.boundOnFocusBounded);
|
||||
}
|
||||
|
||||
onBlurFunction() {
|
||||
// TODO: remove this
|
||||
log_debug("Focus lost from discord window");
|
||||
|
||||
// if user closes discord before the backToOnlineTimeout, clear the
|
||||
// pending timeout (if it even exists)
|
||||
this.backFromAFKTimeoutID = this.cancelTimeout(
|
||||
this.backFromAFKTimeoutID
|
||||
);
|
||||
|
||||
var __afkSetByPlugin = BdApi.loadData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin
|
||||
);
|
||||
var inVoiceChannelAndIdleSetByPlugin =
|
||||
this.inVoiceChannel() && __afkSetByPlugin;
|
||||
|
||||
var inVoiceChannelAndAlwaysOnlineEnabled =
|
||||
this.inVoiceChannel() && this.settings.alwaysOnline;
|
||||
|
||||
if (this.onlineStatusAndNotInVC()) {
|
||||
var _timeout_ms =
|
||||
this.settings.afkTimeout * (DEBUG ? 2 : 60) * 1000;
|
||||
log_debug("setting timeout of " + _timeout_ms + "ms");
|
||||
this.afkTimeoutID = setTimeout(() => {
|
||||
if (this.onlineStatusAndNotInVC()) {
|
||||
this.updateStatus(this.settings.afkStatus);
|
||||
BdApi.saveData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin,
|
||||
true
|
||||
);
|
||||
}
|
||||
// If DEBUG is enabled then keep a shorter duration than 60s
|
||||
}, _timeout_ms); // converting min to ms
|
||||
} else if (
|
||||
// if the user is in a VC, idle was set by plugin &
|
||||
// their current status == afkStatus
|
||||
(inVoiceChannelAndIdleSetByPlugin ||
|
||||
// OR, is user in VC and always online is enabled
|
||||
inVoiceChannelAndAlwaysOnlineEnabled) &&
|
||||
this.currentStatus() == this.settings.afkStatus
|
||||
) {
|
||||
this.updateStatus("online");
|
||||
this.showToast("Changing status back to online, You are in VC");
|
||||
BdApi.saveData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin,
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
onFocusFunction() {
|
||||
// TODO: remove this
|
||||
log_debug("Discord window in focus now");
|
||||
|
||||
// if user opens discord before the afkTimeout, clear the pending
|
||||
// timeout (if it even exists)
|
||||
this.afkTimeoutID = this.cancelTimeout(this.afkTimeoutID);
|
||||
|
||||
log_debug(
|
||||
"Setting timeout of " +
|
||||
this.settings.backToOnlineDelay * 1000 +
|
||||
" ms"
|
||||
);
|
||||
this.backFromAFKTimeoutID = setTimeout(() => {
|
||||
// TODO: Refactor/comment out/test more this part
|
||||
var __afkSetByPlugin = BdApi.loadData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin
|
||||
);
|
||||
var statusIsAFKAndWasSetByPlugin =
|
||||
this.currentStatus() === this.settings.afkStatus &&
|
||||
__afkSetByPlugin === true;
|
||||
|
||||
var statusIsAFKAndAlwaysOnlineIsTrue =
|
||||
this.currentStatus() === this.settings.afkStatus &&
|
||||
this.settings.alwaysOnline === true;
|
||||
|
||||
if (statusIsAFKAndWasSetByPlugin) {
|
||||
this.showToast("Changing status back to online");
|
||||
this.updateStatus("online");
|
||||
BdApi.saveData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin,
|
||||
false
|
||||
);
|
||||
} else if (statusIsAFKAndAlwaysOnlineIsTrue) {
|
||||
BdApi.showToast("Changing status back to online");
|
||||
this.updateStatus("online");
|
||||
BdApi.saveData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin,
|
||||
false
|
||||
);
|
||||
} else if (__afkSetByPlugin == undefined) {
|
||||
return;
|
||||
} else {
|
||||
BdApi.deleteData(
|
||||
this._config.info.name,
|
||||
this.keyIdleSetByPlugin
|
||||
);
|
||||
Logger.info(
|
||||
"User overrode the status. leaving status unchanged..."
|
||||
);
|
||||
}
|
||||
}, this.settings.backToOnlineDelay * 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancles the given timeout id
|
||||
* @param {number} timeoutId
|
||||
* @returns {undefined}
|
||||
*/
|
||||
cancelTimeout(timeoutId) {
|
||||
if (timeoutId != undefined) {
|
||||
log_debug("Cancelling timeout " + timeoutId); // TODO: remove this
|
||||
clearTimeout(timeoutId);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string} the current user status
|
||||
*/
|
||||
currentStatus() {
|
||||
return UserSettingsProtoStore.settings.status.status.value;
|
||||
}
|
||||
/**
|
||||
* @returns {boolean} if user is in a VC
|
||||
*/
|
||||
inVoiceChannel() {
|
||||
return (
|
||||
this.settings.ignoreVCState === false &&
|
||||
getVoiceChannelId() !== null
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if the current status is 'online' and the user is not in a
|
||||
* voice channel
|
||||
* @returns
|
||||
*/
|
||||
onlineStatusAndNotInVC() {
|
||||
return (
|
||||
this.currentStatus() === "online" &&
|
||||
this.inVoiceChannel() === false
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the remote status to the param `toStatus`
|
||||
* @param {('online'|'idle'|'invisible'|'dnd')} toStatus
|
||||
*/
|
||||
updateStatus(toStatus) {
|
||||
if (
|
||||
this._config.DEBUG === true &&
|
||||
this._config.DEBUG_ActuallyChangeStatus === false
|
||||
) {
|
||||
log_debug("Changing (but not changing) status to: " + toStatus);
|
||||
return;
|
||||
}
|
||||
log_debug("Actually changing status to: " + toStatus);
|
||||
UserSettingsProtoUtils.updateAsync(
|
||||
"status",
|
||||
(statusSetting) => {
|
||||
log_debug(statusSetting);
|
||||
statusSetting.status.value = toStatus;
|
||||
},
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* shows toast message based on showToast settings
|
||||
* @param {string} msg
|
||||
*/
|
||||
showToast(msg) {
|
||||
if (this.settings.showToasts) {
|
||||
BdApi.showToast(msg);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
return plugin(Plugin, Api);
|
||||
})(global.ZeresPluginLibrary.buildPlugin(config));
|
||||
/*@end@*/
|
45
BetterDiscord/plugins/BetterAnimations.config.json
Normal file
45
BetterDiscord/plugins/BetterAnimations.config.json
Normal file
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "1.1.12",
|
||||
"hasShownChangelog": true
|
||||
},
|
||||
"settings": {
|
||||
"guild": {
|
||||
"enabled": true,
|
||||
"type": "flipForwards",
|
||||
"easing": "easeInOutCubic",
|
||||
"duration": 700
|
||||
},
|
||||
"channel": {
|
||||
"enabled": true,
|
||||
"type": "slideUp",
|
||||
"easing": "easeInOutCubic",
|
||||
"duration": 500
|
||||
},
|
||||
"settings": {
|
||||
"enabled": false,
|
||||
"type": "slipUp",
|
||||
"easing": "easeInOutCubic",
|
||||
"duration": 500
|
||||
},
|
||||
"messages": {
|
||||
"enabled": true,
|
||||
"type": "slip",
|
||||
"easing": "easeOutQuart",
|
||||
"position": "bottom",
|
||||
"duration": 200
|
||||
},
|
||||
"popouts": {
|
||||
"enabled": true,
|
||||
"type": "flip",
|
||||
"easing": "easeInOutBack",
|
||||
"duration": 300
|
||||
},
|
||||
"expressionPicker": {
|
||||
"enabled": true,
|
||||
"type": "scaleChange",
|
||||
"easing": "easeInOutBack",
|
||||
"duration": 500
|
||||
}
|
||||
}
|
||||
}
|
6
BetterDiscord/plugins/BetterAudioPlayer.config.json
Normal file
6
BetterDiscord/plugins/BetterAudioPlayer.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "1.0.2",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
6
BetterDiscord/plugins/BetterBotTags.config.json
Normal file
6
BetterDiscord/plugins/BetterBotTags.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "1.1.0",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
6
BetterDiscord/plugins/BetterInvites.config.json
Normal file
6
BetterDiscord/plugins/BetterInvites.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "1.6.3",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
37
BetterDiscord/plugins/BetterRoleColors.config.json
Normal file
37
BetterDiscord/plugins/BetterRoleColors.config.json
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "0.9.1",
|
||||
"hasShownChangelog": true
|
||||
},
|
||||
"settings": {
|
||||
"global": {
|
||||
"important": false
|
||||
},
|
||||
"modules": {
|
||||
"typing": true,
|
||||
"voice": true,
|
||||
"mentions": true,
|
||||
"chat": false,
|
||||
"botTags": true,
|
||||
"memberList": true
|
||||
},
|
||||
"popouts": {
|
||||
"username": false,
|
||||
"discriminator": false,
|
||||
"nickname": true,
|
||||
"fallback": true
|
||||
},
|
||||
"modals": {
|
||||
"username": true,
|
||||
"discriminator": false
|
||||
},
|
||||
"auditLog": {
|
||||
"username": true,
|
||||
"discriminator": false
|
||||
},
|
||||
"account": {
|
||||
"username": true,
|
||||
"discriminator": false
|
||||
}
|
||||
}
|
||||
}
|
6
BetterDiscord/plugins/CallTimeCounter.config.json
Normal file
6
BetterDiscord/plugins/CallTimeCounter.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "0.0.6",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
157
BetterDiscord/plugins/CallTimeCounter.plugin.js
Normal file
157
BetterDiscord/plugins/CallTimeCounter.plugin.js
Normal file
|
@ -0,0 +1,157 @@
|
|||
/**
|
||||
* @name CallTimeCounter
|
||||
* @source https://github.com/QWERTxD/BetterDiscordPlugins/blob/main/CallTimeCounter/CallTimeCounter.plugin.js
|
||||
* @description Shows how much time you are in a voice chat.
|
||||
* @updateUrl https://raw.githubusercontent.com/QWERTxD/BetterDiscordPlugins/main/CallTimeCounter/CallTimeCounter.plugin.js
|
||||
* @website https://github.com/QWERTxD/BetterDiscordPlugins/tree/main/CallTimeCounter
|
||||
* @version 0.0.6
|
||||
*/
|
||||
|
||||
const request = require("request");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const config = {
|
||||
info: {
|
||||
name: "CallTimeCounter",
|
||||
authors: [
|
||||
{
|
||||
name: "QWERT"
|
||||
}
|
||||
],
|
||||
version: "0.0.6",
|
||||
description: "Shows how much time you are in a voice chat.",
|
||||
github_raw: "https://raw.githubusercontent.com/QWERTxD/BetterDiscordPlugins/main/CallTimeCounter/CallTimeCounter.plugin.js",
|
||||
},
|
||||
changelog: [
|
||||
{
|
||||
title: "Fixes",
|
||||
type: "fixed",
|
||||
items: [
|
||||
"Fixed for BetterDiscord 1.8 update."
|
||||
]
|
||||
}
|
||||
],
|
||||
defaultConfig: []
|
||||
};
|
||||
|
||||
module.exports = !global.ZeresPluginLibrary ? class {
|
||||
constructor() {
|
||||
this._config = config;
|
||||
}
|
||||
|
||||
load() {
|
||||
BdApi.showConfirmationModal("Library plugin is needed",
|
||||
`The library plugin needed for AQWERT'sPluginBuilder is missing. Please click Download Now to install it.`, {
|
||||
confirmText: "Download",
|
||||
cancelText: "Cancel",
|
||||
onConfirm: () => {
|
||||
request.get("https://rauenzi.github.io/BDPluginLibrary/release/0PluginLibrary.plugin.js", (error, response, body) => {
|
||||
if (error)
|
||||
return electron.shell.openExternal("https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js");
|
||||
|
||||
fs.writeFileSync(path.join(BdApi.Plugins.folder, "0PluginLibrary.plugin.js"), body);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
start() { }
|
||||
|
||||
stop() { }
|
||||
} : (([Plugin, Library]) => {
|
||||
const { DiscordModules, WebpackModules, Patcher, PluginUtilities } = Library;
|
||||
const { React, SelectedChannelStore: {getVoiceChannelId} } = DiscordModules;
|
||||
const PanelSubtext = WebpackModules.find(m => m?.$$typeof?.toString() === "Symbol(react.forward_ref)"
|
||||
&& m.render?.toString().includes("createHref"), {searchExports: true});
|
||||
let lastVoice, lastState;
|
||||
const Dispatcher = WebpackModules.getByProps('dispatch', 'register');
|
||||
|
||||
class Timer extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.connected = this.connected.bind(this);
|
||||
this.state = {
|
||||
startTime: 0,
|
||||
delta: 0
|
||||
};
|
||||
}
|
||||
|
||||
connected(e) {
|
||||
if (e.state && e.state === 'RTC_DISCONNECTED' && !e.hasOwnProperty('streamKey')) {
|
||||
this.setState((prev) => (
|
||||
prev.startTime = Date.now()));
|
||||
}
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if(lastVoice === getVoiceChannelId()) {
|
||||
Dispatcher.subscribe('RTC_CONNECTION_STATE', this.connected);
|
||||
this.setState(lastState);
|
||||
this.interval = setInterval(() => {
|
||||
this.setState((prev) => (prev.delta = Math.round((Date.now() - prev.startTime) / 1000) * 1000));
|
||||
this.setState((prev) => prev.lastVoice = getVoiceChannelId());
|
||||
}, 1000);
|
||||
}else{
|
||||
this.setState((prev) => (
|
||||
prev.startTime = Date.now()));
|
||||
Dispatcher.subscribe('RTC_CONNECTION_STATE', this.connected);
|
||||
this.interval = setInterval(() => {
|
||||
this.setState((prev) => (prev.delta = Math.round((Date.now() - prev.startTime) / 1000) * 1000));
|
||||
this.setState((prev) => prev.lastVoice = getVoiceChannelId());
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
Dispatcher.unsubscribe('RTC_CONNECTION_STATE', this.connected);
|
||||
lastVoice = this.state.lastVoice;
|
||||
lastState = this.state;
|
||||
setTimeout(() => {
|
||||
lastVoice = null;
|
||||
lastState = {};
|
||||
}, 1000)
|
||||
clearInterval(this.interval);
|
||||
}
|
||||
|
||||
render() {
|
||||
return React.createElement("div", { className: "voiceTimer" }, `Time elapsed: ${new Date(this.state.delta).toISOString().substr(11, 8)}`);
|
||||
}
|
||||
};
|
||||
|
||||
class plugin extends Plugin {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
onStart() {
|
||||
this.patch();
|
||||
|
||||
PluginUtilities.addStyle("voicetimer", `
|
||||
.voiceTimer {
|
||||
text-decoration: none !important;
|
||||
margin-top: 8px;
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
onStop() {
|
||||
Patcher.unpatchAll();
|
||||
PluginUtilities.removeStyle("voicetimer");
|
||||
}
|
||||
|
||||
patch() {
|
||||
Patcher.before(PanelSubtext, "render", (_, [props], ret) => {
|
||||
if (!props?.children?.props?.className?.includes("channel")) return;
|
||||
props.children.props.children = [
|
||||
props.children.props.children,
|
||||
React.createElement(Timer, { className: "voiceTimer" })
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return plugin;
|
||||
})(global.ZeresPluginLibrary.buildPlugin(config));
|
7
BetterDiscord/plugins/CharCounter.config.json
Normal file
7
BetterDiscord/plugins/CharCounter.config.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"all": {
|
||||
"sliders": {
|
||||
"showPercentage": 0
|
||||
}
|
||||
}
|
||||
}
|
6
BetterDiscord/plugins/HideDisabledEmojis.config.json
Normal file
6
BetterDiscord/plugins/HideDisabledEmojis.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "0.0.9",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
187
BetterDiscord/plugins/HideDisabledEmojis.plugin.js
Normal file
187
BetterDiscord/plugins/HideDisabledEmojis.plugin.js
Normal file
|
@ -0,0 +1,187 @@
|
|||
/**
|
||||
* @name HideDisabledEmojis
|
||||
* @description Hides disabled emojis from the emoji picker.
|
||||
* @version 0.0.9
|
||||
* @author Zerebos
|
||||
* @authorId 249746236008169473
|
||||
* @website https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/HideDisabledEmojis
|
||||
* @source https://github.com/rauenzi/BetterDiscordAddons/blob/master/Plugins/HideDisabledEmojis/HideDisabledEmojis.plugin.js
|
||||
*/
|
||||
/*@cc_on
|
||||
@if (@_jscript)
|
||||
|
||||
// Offer to self-install for clueless users that try to run this directly.
|
||||
var shell = WScript.CreateObject("WScript.Shell");
|
||||
var fs = new ActiveXObject("Scripting.FileSystemObject");
|
||||
var pathPlugins = shell.ExpandEnvironmentStrings("%APPDATA%\\BetterDiscord\\plugins");
|
||||
var pathSelf = WScript.ScriptFullName;
|
||||
// Put the user at ease by addressing them in the first person
|
||||
shell.Popup("It looks like you've mistakenly tried to run me directly. \n(Don't do that!)", 0, "I'm a plugin for BetterDiscord", 0x30);
|
||||
if (fs.GetParentFolderName(pathSelf) === fs.GetAbsolutePathName(pathPlugins)) {
|
||||
shell.Popup("I'm in the correct folder already.", 0, "I'm already installed", 0x40);
|
||||
} else if (!fs.FolderExists(pathPlugins)) {
|
||||
shell.Popup("I can't find the BetterDiscord plugins folder.\nAre you sure it's even installed?", 0, "Can't install myself", 0x10);
|
||||
} else if (shell.Popup("Should I copy myself to BetterDiscord's plugins folder for you?", 0, "Do you need some help?", 0x34) === 6) {
|
||||
fs.CopyFile(pathSelf, fs.BuildPath(pathPlugins, fs.GetFileName(pathSelf)), true);
|
||||
// Show the user where to put plugins in the future
|
||||
shell.Exec("explorer " + pathPlugins);
|
||||
shell.Popup("I'm installed!", 0, "Successfully installed", 0x40);
|
||||
}
|
||||
WScript.Quit();
|
||||
|
||||
@else@*/
|
||||
const config = {
|
||||
info: {
|
||||
name: "HideDisabledEmojis",
|
||||
authors: [
|
||||
{
|
||||
name: "Zerebos",
|
||||
discord_id: "249746236008169473",
|
||||
github_username: "rauenzi",
|
||||
twitter_username: "ZackRauen"
|
||||
}
|
||||
],
|
||||
version: "0.0.9",
|
||||
description: "Hides disabled emojis from the emoji picker.",
|
||||
github: "https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/HideDisabledEmojis",
|
||||
github_raw: "https://github.com/rauenzi/BetterDiscordAddons/blob/master/Plugins/HideDisabledEmojis/HideDisabledEmojis.plugin.js"
|
||||
},
|
||||
changelog: [
|
||||
{
|
||||
title: "Bugs Squashed",
|
||||
type: "fixed",
|
||||
items: [
|
||||
"Hides emojis in normal picker once again!",
|
||||
"Hides emojis in the status emoji picker.",
|
||||
"Hides extra unrelated buttons in status emoji picker."
|
||||
]
|
||||
}
|
||||
],
|
||||
main: "index.js"
|
||||
};
|
||||
class Dummy {
|
||||
constructor() {this._config = config;}
|
||||
start() {}
|
||||
stop() {}
|
||||
}
|
||||
|
||||
if (!global.ZeresPluginLibrary) {
|
||||
BdApi.showConfirmationModal("Library Missing", `The library plugin needed for ${config.name ?? config.info.name} is missing. Please click Download Now to install it.`, {
|
||||
confirmText: "Download Now",
|
||||
cancelText: "Cancel",
|
||||
onConfirm: () => {
|
||||
require("request").get("https://betterdiscord.app/gh-redirect?id=9", async (err, resp, body) => {
|
||||
if (err) return require("electron").shell.openExternal("https://betterdiscord.app/Download?id=9");
|
||||
if (resp.statusCode === 302) {
|
||||
require("request").get(resp.headers.location, async (error, response, content) => {
|
||||
if (error) return require("electron").shell.openExternal("https://betterdiscord.app/Download?id=9");
|
||||
await new Promise(r => require("fs").writeFile(require("path").join(BdApi.Plugins.folder, "0PluginLibrary.plugin.js"), content, r));
|
||||
});
|
||||
}
|
||||
else {
|
||||
await new Promise(r => require("fs").writeFile(require("path").join(BdApi.Plugins.folder, "0PluginLibrary.plugin.js"), body, r));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = !global.ZeresPluginLibrary ? Dummy : (([Plugin, Api]) => {
|
||||
const plugin = (Plugin, Api) => {
|
||||
const {Patcher, DiscordModules, WebpackModules, Utilities} = Api;
|
||||
return class HideDisabledEmojis extends Plugin {
|
||||
async onStart() {
|
||||
Patcher.after(DiscordModules.EmojiInfo, "isEmojiFiltered", (thisObject, methodArguments, returnValue) => {
|
||||
return returnValue || DiscordModules.EmojiInfo.isEmojiDisabled(methodArguments[0], methodArguments[1]);
|
||||
});
|
||||
|
||||
// BdApi.Webpack.Filters.byStrings("topEmojis", "getDisambiguatedEmojiContext")
|
||||
let key = "";
|
||||
const categoryMemo = WebpackModules.getModule(m => {
|
||||
if (typeof(m) !== "object") return false;
|
||||
const keys = Object.keys(m);
|
||||
if (!keys.length) return false;
|
||||
for (let k = 0; k < keys.length; k++) {
|
||||
const val = m[keys[k]];
|
||||
if (typeof(val?.toString) !== "function") continue;
|
||||
const first = val.toString().includes("topEmojis");
|
||||
const second = val.toString().includes("getDisambiguatedEmojiContext");
|
||||
if (first && second) {
|
||||
key = keys[k];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
if (key && categoryMemo) {
|
||||
Patcher.before(categoryMemo, key, (_, args) => {
|
||||
// arg 0 = picker intention
|
||||
// arg 1 = channel object
|
||||
// arg 2 = guild id
|
||||
// Create a fake channel object with a null guild id
|
||||
// This fake object forces the categories to check isEmojiFiltered
|
||||
if (args[1] == null) {
|
||||
args[1] = {
|
||||
getGuildId: () => null
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const doFiltering = props => {
|
||||
props.rowCountBySection = props.rowCountBySection.filter((c, i) => c || props.collapsedSections.has(props.sectionDescriptors[i].sectionId));
|
||||
props.sectionDescriptors = props.sectionDescriptors.filter(s => s.count || props.collapsedSections.has(s.sectionId));
|
||||
|
||||
const wasFiltered = props.emojiGrid.filtered;
|
||||
props.emojiGrid = props.emojiGrid.filter(r => r.length);
|
||||
if (wasFiltered) props.emojiGrid.filtered = true; // Reassign
|
||||
};
|
||||
|
||||
const PickerWrapMemo = WebpackModules.getModule(m => m?.type?.render?.toString?.()?.includes("EMOJI_PICKER_POPOUT"));
|
||||
Patcher.after(PickerWrapMemo.type, "render", (_, [inputProps], ret) => {
|
||||
const pickerChild = Utilities.findInTree(ret, m => m?.props?.emojiGrid, {walkable: ["props", "children"]});
|
||||
if (!pickerChild?.type?.type) return;
|
||||
ret.props.children.props.page = "DM Channel";
|
||||
if (pickerChild.type.type.__patched) return;
|
||||
Patcher.before(pickerChild.type, "type", (_, [props]) => {
|
||||
if (!props.rowCountBySection) return;
|
||||
if (props.emojiGrid.filtered) return doFiltering(props);
|
||||
props.emojiGrid.filtered = true;
|
||||
let row = 0;
|
||||
for (let s = 0; s < props.sectionDescriptors.length; s++) {
|
||||
const section = props.sectionDescriptors[s];
|
||||
const rowCount = props.rowCountBySection[s];
|
||||
const rowEnd = row + rowCount - 1;
|
||||
let countLeft = 0;
|
||||
let rowsLeft = 0;
|
||||
for (let r = row; r <= rowEnd; r++) {
|
||||
// If it's not disabled or if it's the upload button in status picker
|
||||
props.emojiGrid[r] = props.emojiGrid[r].filter(e => !e.isDisabled && (e.type !== 1 || inputProps?.pickerIntention !== 1));
|
||||
const remaining = props.emojiGrid[r].length;
|
||||
if (remaining) {
|
||||
rowsLeft = rowsLeft + 1;
|
||||
countLeft = countLeft + remaining;
|
||||
}
|
||||
}
|
||||
section.count = countLeft;
|
||||
props.rowCountBySection[s] = rowsLeft;
|
||||
|
||||
row = rowEnd + 1;
|
||||
}
|
||||
|
||||
doFiltering(props);
|
||||
});
|
||||
pickerChild.type.type.__patched = true;
|
||||
});
|
||||
}
|
||||
|
||||
onStop() {
|
||||
Patcher.unpatchAll();
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
return plugin(Plugin, Api);
|
||||
})(global.ZeresPluginLibrary.buildPlugin(config));
|
||||
/*@end@*/
|
16
BetterDiscord/plugins/PluginRepo.config.json
Normal file
16
BetterDiscord/plugins/PluginRepo.config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"all": {
|
||||
"cached": "2 7 8 9 11 14 15 17 28 29 30 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 80 81 82 83 85 86 87 88 89 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 108 109 110 111 120 126 127 131 132 134 137 138 139 146 157 158 159 160 162 171 173 176 179 181 182 183 184 185 186 188 189 190 193 195 196 197 200 201 228 237 238 240 245 262 274 278 287 291 292 293 295 306 312 314 317 318 323 331 344 350 351 352 353 354 356 366 368 377 379 381 382 383 390 395 401 404 420 421 429 438 442 476 479 489 509 518 520 523 525 535 539 547 554 577 579 589 592 593 598 599 606 608 611 614 620 621 627 638 644 645 670 671 679 686 692 693 694 699 708 760 762 772 798 802 805 806 807 819 827 843 845 850 856 859 867 878 881 882 883 930 936 938 953 954 970 971 979 989 990 996 1000 1005 1010 1016 1023",
|
||||
"filters": {
|
||||
"updated": true,
|
||||
"outdated": true,
|
||||
"downloadable": true
|
||||
},
|
||||
"general": {
|
||||
"notifyNewEntries": true,
|
||||
"notifyOutdated": true,
|
||||
"startDownloaded": true,
|
||||
"startUpdated": true
|
||||
}
|
||||
}
|
||||
}
|
1055
BetterDiscord/plugins/PluginRepo.plugin.js
Normal file
1055
BetterDiscord/plugins/PluginRepo.plugin.js
Normal file
File diff suppressed because it is too large
Load diff
10
BetterDiscord/plugins/SplitLargeMessages.config.json
Normal file
10
BetterDiscord/plugins/SplitLargeMessages.config.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"all": {
|
||||
"amounts": {
|
||||
"splitCounter": 0
|
||||
},
|
||||
"general": {
|
||||
"byNewlines": false
|
||||
}
|
||||
}
|
||||
}
|
21609
BetterDiscord/plugins/TeX.plugin.js
Normal file
21609
BetterDiscord/plugins/TeX.plugin.js
Normal file
File diff suppressed because one or more lines are too long
16
BetterDiscord/plugins/ThemeRepo.config.json
Normal file
16
BetterDiscord/plugins/ThemeRepo.config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"all": {
|
||||
"cached": "1 3 16 18 22 23 26 32 33 39 40 41 45 46 47 48 49 52 53 56 112 124 125 140 142 144 147 153 155 156 161 166 172 174 177 204 205 209 211 212 213 216 218 222 226 231 233 252 256 257 258 286 296 300 308 320 329 342 359 362 369 371 374 385 394 399 405 411 412 422 439 468 483 485 507 508 515 541 553 572 576 580 581 597 601 607 613 626 636 637 641 642 643 653 659 662 664 665 695 712 713 714 719 722 733 734 735 736 737 746 752 753 770 781 813 823 848 865",
|
||||
"filters": {
|
||||
"updated": true,
|
||||
"outdated": true,
|
||||
"downloadable": true
|
||||
},
|
||||
"general": {
|
||||
"notifyOutdated": true,
|
||||
"notifyNewEntries": true,
|
||||
"startDownloaded": false,
|
||||
"startUpdated": false
|
||||
}
|
||||
}
|
||||
}
|
1238
BetterDiscord/plugins/ThemeRepo.plugin.js
Normal file
1238
BetterDiscord/plugins/ThemeRepo.plugin.js
Normal file
File diff suppressed because it is too large
Load diff
6
BetterDiscord/plugins/TypingUsersAvatars.config.json
Normal file
6
BetterDiscord/plugins/TypingUsersAvatars.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "1.0.5",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
194
BetterDiscord/plugins/TypingUsersAvatars.plugin.js
Normal file
194
BetterDiscord/plugins/TypingUsersAvatars.plugin.js
Normal file
|
@ -0,0 +1,194 @@
|
|||
/**
|
||||
* @name TypingUsersAvatars
|
||||
* @source https://github.com/QWERTxD/BetterDiscordPlugins/blob/main/TypingUsersAvatars/TypingUsersAvatars.plugin.js
|
||||
* @updateUrl https://raw.githubusercontent.com/QWERTxD/BetterDiscordPlugins/main/TypingUsersAvatars/TypingUsersAvatars.plugin.js
|
||||
* @website https://github.com/QWERTxD/BetterDiscordPlugins/tree/main/TypingUsersAvatars
|
||||
* @version 1.0.5
|
||||
* @description Shows avatars of typing users.
|
||||
*/
|
||||
|
||||
const request = require('request');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const config = {
|
||||
info: {
|
||||
name: 'TypingUsersAvatars',
|
||||
authors: [
|
||||
{
|
||||
name: 'QWERT'
|
||||
}
|
||||
],
|
||||
version: '1.0.5',
|
||||
description: 'Shows avatars of typing users.',
|
||||
github_raw: "https://raw.githubusercontent.com/QWERTxD/BetterDiscordPlugins/main/TypingUsersAvatars/TypingUsersAvatars.plugin.js",
|
||||
},
|
||||
changelog: [
|
||||
{
|
||||
title: 'What\'s new?',
|
||||
type: 'added',
|
||||
items: [
|
||||
'Added option to show guild avatars of typing users',
|
||||
]
|
||||
}
|
||||
],
|
||||
defaultConfig: [
|
||||
{
|
||||
type: 'switch',
|
||||
name: 'Show users status',
|
||||
id: 'showStatus',
|
||||
value: true
|
||||
},
|
||||
{
|
||||
type: 'switch',
|
||||
name: 'Show guild avatars',
|
||||
id: 'showGuildAvatar',
|
||||
value: true
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
module.exports = !global.ZeresPluginLibrary ? class {
|
||||
constructor() {
|
||||
this._config = config;
|
||||
}
|
||||
|
||||
load() {
|
||||
BdApi.showConfirmationModal('Library plugin is needed',
|
||||
`The library plugin needed for AQWERT'sPluginBuilder is missing. Please click Download Now to install it.`, {
|
||||
confirmText: 'Download',
|
||||
cancelText: 'Cancel',
|
||||
onConfirm: () => {
|
||||
request.get('https://rauenzi.github.io/BDPluginLibrary/release/0PluginLibrary.plugin.js', (error, response, body) => {
|
||||
if (error)
|
||||
return electron.shell.openExternal('https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js');
|
||||
|
||||
fs.writeFileSync(path.join(BdApi.Plugins.folder, '0PluginLibrary.plugin.js'), body);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
start() { }
|
||||
|
||||
stop() { }
|
||||
} : (([Plugin, Library]) => {
|
||||
const { DiscordModules, WebpackModules, PluginUtilities, Patcher, ReactComponents, Popouts, Utilities, DiscordSelectors } = Library;
|
||||
const { React, UserStore, RelationshipStore, UserStatusStore, Strings } = DiscordModules;
|
||||
const AssetUtils = WebpackModules.getByProps("getUserBannerURL");
|
||||
const Avatar = WebpackModules.getByProps('AnimatedAvatar');
|
||||
const VoiceUserSummary = WebpackModules.findByDisplayName("VoiceUserSummaryItem")
|
||||
|
||||
class AvatarComponent extends React.Component {
|
||||
render() {
|
||||
const { user, status, guildId } = this.props;
|
||||
const guildAvatar = AssetUtils.getGuildMemberAvatarURL({ guildId: guildId, userId: user.id, avatar: user.guildMemberAvatars[guildId] });
|
||||
return React.createElement(Avatar.default, {
|
||||
src: user?.guildMemberAvatars[guildId] ? guildAvatar : user.getAvatarURL(),
|
||||
status: status,
|
||||
size: Avatar.Sizes.SIZE_16,
|
||||
onClick() {
|
||||
Popouts.showUserPopout(document.getElementById(`typing-user-${user.id}`), user)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
class plugin extends Plugin {
|
||||
constructor() {
|
||||
super();
|
||||
this.getSettingsPanel = () => {
|
||||
return this.buildSettingsPanel().getElement();
|
||||
};
|
||||
}
|
||||
|
||||
onStart() {
|
||||
Utilities.suppressErrors(this.patch.bind(this))();
|
||||
|
||||
PluginUtilities.addStyle('TypingUsersAvatars', `
|
||||
.typing-2J1mQU .text-3S7XCz {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.typing-2J1mQU .wrapper-1VLyxH {
|
||||
display: flex;
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
.typing-2J1mQU .text-3S7XCz,
|
||||
.typing-2J1mQU .text-3S7XCz > strong {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
.several-users {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.several-users .avatarSize-1KpZ5E {
|
||||
margin: 0;
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
onStop() {
|
||||
Patcher.unpatchAll();
|
||||
PluginUtilities.removeStyle('TypingUsersAvatars');
|
||||
}
|
||||
|
||||
filter(users) {
|
||||
return Object.keys(users).filter((user) => {
|
||||
return user != UserStore.getCurrentUser().id && !RelationshipStore.isBlocked(user);
|
||||
})
|
||||
}
|
||||
|
||||
/* code highly inspired by https://github.com/rauenzi/BetterDiscordAddons/blob/master/Plugins/BetterRoleColors/BetterRoleColors.plugin.js */
|
||||
async patch() {
|
||||
const TypingUsers = await ReactComponents.getComponentByName('TypingUsers', DiscordSelectors.Typing.typing);
|
||||
Patcher.after(TypingUsers.component.prototype, 'render', (thisObject, [props], ret) => {
|
||||
const typingUsers = this.filter({ ...thisObject.props.typingUsers });
|
||||
const guildId = thisObject.props?.guildId;
|
||||
|
||||
for (let u = 0; u < typingUsers.length; u++) {
|
||||
const user = UserStore.getUser(typingUsers[u]);
|
||||
const status = this.settings.showStatus ? UserStatusStore.getStatus(user.id) : null;
|
||||
|
||||
if (ret.props.children[0].props.children[1]?.props.children !== Strings.Messages.SEVERAL_USERS_TYPING) {
|
||||
const usersComponent = ret.props.children[0].props.children[1].props.children.filter(user => user.props);
|
||||
|
||||
usersComponent[u].props.children.unshift(React.createElement("div", {
|
||||
id: `typing-user-${user.id}`,
|
||||
children: React.createElement(AvatarComponent, { user, status, guildId })
|
||||
}));
|
||||
} else {
|
||||
ret.props.children[0].props.children = [
|
||||
React.createElement(VoiceUserSummary, {
|
||||
className: "several-users",
|
||||
users: typingUsers.map(UserStore.getUser),
|
||||
max: 3
|
||||
}),
|
||||
ret.props.children[0].props.children
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (!ret) return;
|
||||
const tree = ret.props.children;
|
||||
if (!tree) return;
|
||||
|
||||
tree.map((child) => {
|
||||
const children = child?.props?.children;
|
||||
if (!children || typeof children !== 'object') return;
|
||||
|
||||
child.props.style = {
|
||||
display: 'flex',
|
||||
alignItems: 'center'
|
||||
};
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return plugin;
|
||||
})(global.ZeresPluginLibrary.buildPlugin(config));
|
6
BetterDiscord/plugins/ZeresPluginLibrary.config.json
Normal file
6
BetterDiscord/plugins/ZeresPluginLibrary.config.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"currentVersionInfo": {
|
||||
"version": "2.0.19",
|
||||
"hasShownChangelog": true
|
||||
}
|
||||
}
|
6321
BetterDiscord/plugins/gh-redirect?id=9
Normal file
6321
BetterDiscord/plugins/gh-redirect?id=9
Normal file
File diff suppressed because it is too large
Load diff
115
BetterDiscord/themes/ClearVision_v6.theme.css
Normal file
115
BetterDiscord/themes/ClearVision_v6.theme.css
Normal file
|
@ -0,0 +1,115 @@
|
|||
/**
|
||||
* @name ClearVision
|
||||
* @author ClearVision Team
|
||||
* @version 6.3.0
|
||||
* @description Highly customizable theme for BetterDiscord.
|
||||
* @source https://github.com/ClearVision/ClearVision-v6
|
||||
* @website https://clearvision.github.io
|
||||
* @invite dHaSxn3
|
||||
*/
|
||||
|
||||
/* Credits to Zerthox for making the original theme. */
|
||||
|
||||
/* IMPORT CSS */
|
||||
@import url(https://clearvision.github.io/ClearVision-v6/main.css);
|
||||
|
||||
/* SETTINGS */
|
||||
:root {
|
||||
/* ACCENT COLORS */
|
||||
--main-color: #2780e6; /* main accent color (hex, rgb or hsl) [default: #2780e6] */
|
||||
--hover-color: #1e63b3; /* hover accent color (hex, rgb or hsl) [default: #1e63b3] */
|
||||
--success-color: #43b581; /* success accent color (hex, rgb or hsl) [default: #43b581] */
|
||||
--danger-color: #982929; /* danger accent color (hex, rgb or hsl) [default: #982929] */
|
||||
--url-color: var(--main-color); /*The color of url links [default: var(--main-color)]*/
|
||||
|
||||
/* STATUS COLORS */
|
||||
--online-color: #43b581; /* online status color (hex, rgb or hsl) [default: #43b581] */
|
||||
--idle-color: #faa61a; /* idle status color (hex, rgb or hsl) [default: #faa61a] */
|
||||
--dnd-color: #982929; /* dnd status color (hex, rgb or hsl) [default: #982929] */
|
||||
--streaming-color: #593695; /* streaming status color (hex, rgb or hsl) [default: #593695] */
|
||||
--offline-color: #808080; /* offline/invisible status color (hex, rgb or hsl) [default: #808080] */
|
||||
|
||||
/* GENERAL */
|
||||
--main-font: JetBrains Mono, Whitney, gg sans, Helvetica Neue, Helvetica, Arial, sans-serif; /* main font for app (font must be installed) [default: Whitney, Helvetica Neue, Helvetica, Arial, sans-serif] */
|
||||
--code-font: JetBrains Mono, Consolas, Liberation Mono, Menlo, Courier, monospace; /* font for codeblocks (font must be installed) [default: Consolas, Liberation Mono, Menlo, Courier, monospace] */
|
||||
--text-normal: rgb(220, 221, 222); /* color of default discord text */
|
||||
--text-muted: rgb(114, 118, 125); /* color of default discord muted text (e.g.text found in input fields before typing).*/
|
||||
--channels-width: 220px; /* channel list width (240px for Discord default) [default: 220px] */
|
||||
--members-width: 240px; /* member list width [default: 240px] */
|
||||
|
||||
/* APP BACKGROUND */
|
||||
--background-shading: 100%; /* app background shading (0 for complete smoothness) [default: 100%] */
|
||||
--background-overlay: rgba(0, 0, 0, 0.0); /* app background overlay color/gradient [default: rgba(0, 0, 0, 0.6)] */
|
||||
--background-image: rgba(40, 42, 46, 0.6); /* app background image (link must be HTTPS) [default: url(https://clearvision.github.io/images/sapphire.jpg)]*/
|
||||
--background-position: center; /* app background position [default: center] */
|
||||
--background-size: cover; /* app background size [default: cover] */
|
||||
--background-repeat: no-repeat; /* app background repeat [default: no-repeat] */
|
||||
--background-attachment: fixed; /* app background attachment [default: fixed] */
|
||||
--background-brightness: 100%; /* app background brightness (< 100% for darken, > 100% for lighten) [default: 100%] */
|
||||
--background-contrast: 100%; /* app background contrast [default: 100%] */
|
||||
--background-saturation: 100%; /* app background saturation [default: 100%] */
|
||||
--background-invert: 0%; /* app background invert (0 - 100%) [default: 0%] */
|
||||
--background-grayscale: 0%; /* app background grayscale ( 0 - 100%) [default: 0%] */
|
||||
--background-sepia: 0%; /* app background sepia (0 - 100%) [default: 0%] */
|
||||
--background-blur: 0px; /* app background blur [default: 0px] */
|
||||
|
||||
/* HOME BUTTON ICON */
|
||||
--home-icon: url(https://clearvision.github.io/icons/discord.svg); /* home button icon (link must be HTTPS) [default: url(https://clearvision.github.io/icons/discord.svg)]*/
|
||||
--home-position: center; /* home button icon position [default: center] */
|
||||
--home-size: 40px; /* home button icon size [default: 40px] */
|
||||
|
||||
/* CHANNEL COLORS */
|
||||
--channel-unread: var(--main-color); /* Unread Server channel color. [default: var(--main-color)] THIS OVERRIDES YOUR MAIN COLOR*/
|
||||
--channel-color: rgba(255, 255, 255, 0.3); /*Read Server channel color [default: rgba(255,255,255,0.3);]*/
|
||||
--channel-text-selected: #fff; /* Selected channel text color, CV default is #fff */
|
||||
--muted-color: rgba(255, 255, 255, 0.1); /*Muted channel color [default: rgba(255,255,255,0.1);]*/
|
||||
|
||||
/* MODAL BACKDROP */
|
||||
--backdrop-overlay: rgba(0, 0, 0, 0.8); /* modal backdrop overlay color/gradient [default: rgba(0, 0, 0, 0.8)] */
|
||||
--backdrop-image: var(--background-image); /* modal backdrop image (link must be HTTPS) [default: var(--background-image)] */
|
||||
--backdrop-position: var(--background-position); /* modal backdrop position [default: var(--background-position)] */
|
||||
--backdrop-size: var(--background-size); /* modal backdrop size [default: var(--background-size)] */
|
||||
--backdrop-repeat: var(--background-repeat); /* modal backdrop repeat [default: var(--background-repeat)] */
|
||||
--backdrop-attachment: var(--background-attachment); /* modal backdrop attachment [default: var(--background-attachment)] */
|
||||
--backdrop-brightness: var(--background-brightness); /* modal backdrop brightness (< 100% for darken, > 100% for lighten) [default: var(--background-brightness)] */
|
||||
--backdrop-contrast: var(--background-contrast); /* modal backdrop contrast [default: var(--background-contrast)] */
|
||||
--backdrop-saturation: var(--background-saturation); /* modal backdrop saturation [default: var(--background-saturation)] */
|
||||
--backdrop-invert: var(--background-invert); /* modal backdrop invert (0 - 100%) [default: var(--background-invert)] */
|
||||
--backdrop-grayscale: var(--background-grayscale); /* modal backdrop grayscale ( 0 - 100%) [default: var(--background-grayscale)] */
|
||||
--backdrop-sepia: var(--background-sepia); /* modal backdrop sepia (0 - 100%) [default: var(--background-sepia)] */
|
||||
--backdrop-blur: var(--background-blur); /* modal backdrop blur [default: var(--background-blur)] */
|
||||
|
||||
/* USER POPOUT BACKGROUND */
|
||||
--user-popout-image: var(--background-image); /* app background image (link must be HTTPS) [default: var(--background-image)] */
|
||||
--user-popout-position: var(--background-position); /* user popout background position [default: var(--background-position)] */
|
||||
--user-popout-size: var(--background-size); /* user popout background size [default: var(--background-size)] */
|
||||
--user-popout-repeat: var(--background-repeat); /* user popout background repeat [default: var(--background-repeat)] */
|
||||
--user-popout-attachment: var(--background-attachment); /* user popout background attachment [default: var(--background-attachment)] */
|
||||
--user-popout-brightness: var(--background-brightness); /* user popout background brightness (< 100% for darken, > 100% for lighten) [default: var(--background-brightness)] */
|
||||
--user-popout-contrast: var(--background-contrast); /* user popout background contrast [default: var(--background-contrast)] */
|
||||
--user-popout-saturation: var(--background-saturation); /* user popout background saturation [default: var(--background-saturation)] */
|
||||
--user-popout-invert: var(--background-invert); /* user popout background invert (0 - 100%) [default: var(--background-invert)] */
|
||||
--user-popout-grayscale: var(--background-grayscale); /* user popout background grayscale (0 - 100%) [default: var(--background-grayscale)] */
|
||||
--user-popout-sepia: var(--background-sepia); /* user popout background sepia (0 - 100%) [default: var(--background-sepia)] */
|
||||
--user-popout-blur: calc(var(--background-blur) + 3px); /* user popout background blur [default: calc(var(--background-blur) + 3px)] */
|
||||
--user-popout-overlay: rgba(0, 0, 0, 0.6); /* user popout overlay color [default: rgba(0, 0, 0, .6)] */
|
||||
|
||||
/* USER MODAL BACKGROUND */
|
||||
--user-modal-image: var(--background-image); /* app background image (link must be HTTPS) [default: var(--background-image)] */
|
||||
--user-modal-position: var(--background-position); /* user modal background position [default: var(--background-position)] */
|
||||
--user-modal-size: var(--background-size); /* user modal background size [default: var(--background-size)] */
|
||||
--user-modal-repeat: var(--background-repeat); /* user modal background repeat [default: var(--background-repeat)] */
|
||||
--user-modal-attachment: var(--background-attachment); /* user modal background attachment [default: var(--background-attachment)] */
|
||||
--user-modal-brightness: var(--background-brightness); /* user modal background brightness (< 100% for darken, > 100% for lighten) [default: var(--background-brightness)] */
|
||||
--user-modal-contrast: var(--background-contrast); /* user modal background contrast [default: var(--background-contrast)] */
|
||||
--user-modal-saturation: var(--background-saturation); /* user modal background saturation [default: var(--background-saturation)] */
|
||||
--user-modal-invert: var(--background-invert); /* user modal background invert (0 - 100%) [default: var(--background-invert)] */
|
||||
--user-modal-grayscale: var(--background-grayscale); /* user modal background grayscale (0 - 100%) [default: var(--background-grayscale)] */
|
||||
--user-modal-sepia: var(--background-sepia); /* user modal background sepia (0 - 100%) [default: var(--background-sepia)] */
|
||||
--user-modal-blur: calc(var(--background-blur) + 3px); /* user modal background blur [default: calc(var(--background-blur) + 3px)] */
|
||||
|
||||
/* THEME BD COLORS */
|
||||
--bd-blue: var(--main-color); /* betterdiscord main color [default: var(--main-color)] */
|
||||
--bd-blue-hover: var(--hover-color); /* betterdiscord hover color [default: var(--hover-color)] */
|
||||
--bd-blue-active: var(--hover-color); /* betterdiscord active color [default: var(--hover-color)] */
|
||||
}
|
21
BetterDiscord/themes/DarkMatter.theme.css
Normal file
21
BetterDiscord/themes/DarkMatter.theme.css
Normal file
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* @name Dark Matter
|
||||
* @author Tropical#8908, Hammock#3110
|
||||
* @version 3.0.0
|
||||
* @description A cold, dark & frosty theme.
|
||||
* @source https://github.com/DiscordStyles/DarkMatter/
|
||||
*/
|
||||
|
||||
@import url('https://DiscordStyles.github.io/DarkMatter/src/base.css');
|
||||
|
||||
/* Variables */
|
||||
:root {
|
||||
--avatar-size: 32px;
|
||||
--background-image: url('https://i.imgur.com/7SbtKvw.png');
|
||||
--home-image: url('https://i.imgur.com/233d55Y.gif');
|
||||
--background-solid: #161921;
|
||||
--background-solid-dark: #101218;
|
||||
--background-solid-darker: #0c0e12;
|
||||
--accent: 37, 172, 232;
|
||||
--accent-alt: 29, 101, 134;
|
||||
}
|
91
BetterDiscord/themes/DiscordPlus.theme.css
Normal file
91
BetterDiscord/themes/DiscordPlus.theme.css
Normal file
|
@ -0,0 +1,91 @@
|
|||
/**
|
||||
* @name Discord+
|
||||
* @author PlusInsta
|
||||
* @authorId 309931975102300160
|
||||
* @authorLink https://plusinsta.xyz
|
||||
* @version 3.2.1
|
||||
* @description A sleek, customizable Discord theme.
|
||||
* @donate https://ko-fi.com/plusinsta
|
||||
* @website https://plusinsta.github.io/discord-plus
|
||||
* @source https://github.com/PlusInsta/discord-plus
|
||||
* @updateUrl https://plusinsta.github.io/discord-plus/DiscordPlus.theme.css
|
||||
* @invite 2Jwh2nS
|
||||
*/
|
||||
@import url(https://plusinsta.github.io/discord-plus/src/DiscordPlus-source.theme.css);
|
||||
|
||||
/* I've commented most of these values so you can change them yourself. If you're having trouble, or you want to do more than what these values allow for, a volunteer might be able to help you in my server. */
|
||||
|
||||
.theme-dark {
|
||||
/* Backdrop image which is shown behind the app. Can also be an HTML color. Falls back to accent color if invalid.
|
||||
To use an image from your computer, upload it somewhere first, copy its link, then paste it below. */
|
||||
--dplus-backdrop: url(https://i.imgur.com/3AiL3yN.png);
|
||||
|
||||
/* Accent color, used to decorate the UI with colors. */
|
||||
--dplus-accent-color-hue: 320;
|
||||
--dplus-accent-color-saturation: 60%;
|
||||
--dplus-accent-color-lightness: 31%;
|
||||
|
||||
/* Foreground color: For things like text and icons. */
|
||||
--dplus-foreground-color-hue-base: 210;
|
||||
--dplus-foreground-color-hue-links: 197;
|
||||
--dplus-foreground-color-saturation-amount: 1;
|
||||
--dplus-foreground-color-lightness-amount: 1;
|
||||
|
||||
/* Background color: Covers the backdrop so the app is easier to read. */
|
||||
--dplus-background-color-hue: 320;
|
||||
--dplus-background-color-saturation-amount: 1;
|
||||
--dplus-background-color-lightness-amount: 1;
|
||||
--dplus-background-color-alpha: 0.8;
|
||||
}
|
||||
|
||||
/* If you use light theme, you can give it unique settings that are separate from dark theme. */
|
||||
.theme-light {
|
||||
--dplus-backdrop: url(https://i.imgur.com/3AiL3yN.png);
|
||||
|
||||
--dplus-accent-color-hue: 320;
|
||||
--dplus-accent-color-saturation: 60%;
|
||||
--dplus-accent-color-lightness: 31%;
|
||||
|
||||
--dplus-foreground-color-hue-base: 210;
|
||||
--dplus-foreground-color-hue-links: 197;
|
||||
--dplus-foreground-color-saturation-amount: 1;
|
||||
--dplus-foreground-color-lightness-amount: 1;
|
||||
|
||||
--dplus-background-color-hue: 320;
|
||||
--dplus-background-color-saturation-amount: 1;
|
||||
--dplus-background-color-lightness-amount: 1;
|
||||
--dplus-background-color-alpha: 0.8;
|
||||
}
|
||||
|
||||
:root {
|
||||
/* Fonts */
|
||||
/* You can use any installed font on your device. */
|
||||
--dplus-font-ui: 'Poppins';
|
||||
--dplus-font-body: 'Roboto';
|
||||
--dplus-font-header: 'Righteous';
|
||||
|
||||
/* Round corner sizes, measured in pixel radius.
|
||||
Set avatar/server radius to 50% to make them circular.
|
||||
UI radius must be in pixels, otherwise things break. */
|
||||
--dplus-radius-ui: 10px;
|
||||
--dplus-radius-avatar: 20%;
|
||||
--dplus-radius-server: 20%;
|
||||
|
||||
/* This decides how much breathing room there should be between things like buttons and content. */
|
||||
--dplus-spacing-ui: 10px;
|
||||
|
||||
/* This sets how much space there should be between the app contents and the edges of the window. It also affects the distance between major UI elements, such as the server list to the channel list and channel list to the chat. */
|
||||
--dplus-spacing-app: 10px;
|
||||
|
||||
/* Size of user and server icons */
|
||||
--dplus-icon-avatar-chat: 64px;
|
||||
--dplus-icon-avatar-list: 32px;
|
||||
--dplus-icon-avatar-profile: 80px;
|
||||
|
||||
--dplus-icon-server-sidebar: 48px;
|
||||
--dplus-icon-server-list: 32px;
|
||||
|
||||
/* The Home icon on the top left */
|
||||
--dplus-icon-home-dark: url(https://plusinsta.github.io/discord-plus/assets/discord/home_dark.svg);
|
||||
--dplus-icon-home-light: url(https://plusinsta.github.io/discord-plus/assets/discord/home_light.svg);
|
||||
}
|
69
BetterDiscord/themes/FrostedGlass.theme.css
Normal file
69
BetterDiscord/themes/FrostedGlass.theme.css
Normal file
|
@ -0,0 +1,69 @@
|
|||
/**
|
||||
* @name Frosted Glass
|
||||
* @author Gibbu#1211
|
||||
* @version 2.0.0
|
||||
* @description Display your picture of choice with adjustable blur and brightness. Dark theme is required.
|
||||
* @invite ZHthyCw
|
||||
* @donate https://paypal.me/IanRGibson
|
||||
* @authorId 174868361040232448
|
||||
* @source https://github.com/DiscordStyles/FrostedGlass
|
||||
* @website https://gibbu.me/
|
||||
*/
|
||||
|
||||
@import url("https://discordstyles.github.io/FrostedGlass/dist/FrostedGlass.css");
|
||||
|
||||
/* BlackBox tags */
|
||||
@import url('https://monstrousdev.github.io/themes/addons/user-tags.css');
|
||||
|
||||
/* Old Windows titlebar - remove this @import if you wish to use default titlebar */
|
||||
@import url("https://gibbu.github.io/BetterDiscord-Themes/addons/windows-titlebar.css");
|
||||
|
||||
:root {
|
||||
/* Background image variables */
|
||||
--background-image: url('https://i.imgur.com/kYW2H5C.jpg'); /* Main background image | URL MUST BE A DIRECT LINK (ending in .jpg, .jpeg, .png, .gif) */
|
||||
--background-image-blur: 5px; /* Blur intensity of --background-image | Must end in px | DEFAULT: 5px */
|
||||
--background-image-size: cover; /* Size of the background image | DEFAUT: cover | OPTIONS: cover, contain */
|
||||
--background-image-position: center; /* Position of background image | DEAFULT: center | OPTIONS: top, right, bottom, left, center */
|
||||
|
||||
/* Popout & Modal variables */
|
||||
--popout-modal-image: var(--background-image); /* Background image for popouts and modals | URL MUST BE A DIRECT LINK (ending in .jpg, .jpeg, .png, .gif) */
|
||||
--popout-modal-blur: 5px; /* Blur intensity of --popout-modal-image | Must end in px | DEFAULT: 5px */
|
||||
--popout-modal-size: cover; /* Size of the popout/modal image | DEFAUT: cover | OPTIONS: cover, contain */
|
||||
--popout-modal-position: center; /* Position of popout/modal image | DEAFULT: center | OPTIONS: top, right, bottom, left, center */
|
||||
|
||||
/* Home image variables */
|
||||
--home-button-image: url('https://gibbu.github.io/BetterDiscord-Themes/FrostedGlass/assets/discord.svg'); /* Home button image | URL MUST BE A DIRECT LINK (ending in .jpg, .jpeg, .png, .gif) */
|
||||
--home-button-size: cover; /* Size of the home button image | DEFAUT: cover */
|
||||
--home-button-position: center; /* Position of home button image | DEAFULT: center */
|
||||
|
||||
/* Brightness variables */
|
||||
--serverlist-brightness: 0.8; /* Brightness for serverlist | 0 - 1 (decimals allowed) | DEFAULT: 0.8 */
|
||||
--left-brightness: 0.8; /* Channels and DM list brightness | 0 - 1 (decimals allowed) | DEFAULT: 0.8 */
|
||||
--middle-brightness: 0.6; /* Chat brightness | 0 - 1 (decimals allowed) | DEFAULT: 0.6 */
|
||||
--right-brightness: 0; /* Members and Now Playing brightness | 0 - 1 (decimals allowed) | DEFAULT: 0 */
|
||||
--popout-modal-brightness: 0.75; /* Brightness for popouts and modals | 0 - 1 (decimals allowed) | DEFAULT: 0.75 */
|
||||
|
||||
/* Gradient variables */
|
||||
--gradient-primary: 103,58,183; /* DEFAULT: 103,58,183 */
|
||||
--gradient-secondary: 63,81,181; /* DEFAULT: 63,81,181 */
|
||||
--gradient-direction: 320deg; /* DEFAULT: 320deg */
|
||||
|
||||
/* Tint variables */
|
||||
--tint-colour: 255,51,159; /* Colour of tint | DEAFULT: 255,51,159 */
|
||||
--tint-brightness: 0; /* Brightness of --tint-colour | 0 - 1 (decimals allowed) | DEFAULT: 0 */
|
||||
|
||||
/* Other variables */
|
||||
--window-padding: 20px; /* Spacing around the Discord window | DEFAULT: 20px */
|
||||
--window-roundness: 10px; /* Roundness of Discord | DEFAULT: 10px */
|
||||
--scrollbar-colour: rgba(255,255,255,0.05); /* DEFAULT: rgba(255,255,255,0.05) */
|
||||
--link-colour: #00b0f4; /* DEFAULT: #00b0f4 */
|
||||
|
||||
/*
|
||||
Visit https://fonts.google.com and select one to your liking.
|
||||
Now just follow this tutorial: https://imgur.com/a/CNbw7xC
|
||||
*/
|
||||
--font: 'Whitney';
|
||||
|
||||
/* Do not touch */
|
||||
--update-notice-1: none;
|
||||
}
|
1
X11/xresources
Normal file
1
X11/xresources
Normal file
|
@ -0,0 +1 @@
|
|||
Xcursor.size: 16
|
3
bash/.bash_logout
Normal file
3
bash/.bash_logout
Normal file
|
@ -0,0 +1,3 @@
|
|||
#
|
||||
# ~/.bash_logout
|
||||
#
|
5
bash/.bash_profile
Normal file
5
bash/.bash_profile
Normal file
|
@ -0,0 +1,5 @@
|
|||
#
|
||||
# ~/.bash_profile
|
||||
#
|
||||
|
||||
[[ -f ~/.bashrc ]] && . ~/.bashrc
|
9
bash/.bashrc
Normal file
9
bash/.bashrc
Normal file
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# ~/.bashrc
|
||||
#
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
[[ $- != *i* ]] && return
|
||||
|
||||
alias ls='ls --color=auto'
|
||||
PS1='[\u@\h \W]\$ '
|
|
@ -1,11 +1,41 @@
|
|||
dotfiles_dir = "dev/dotfiles"
|
||||
|
||||
[settings]
|
||||
posthooks = [ "i3-msg restart" ]
|
||||
posthooks = [
|
||||
"i3-msg restart",
|
||||
]
|
||||
|
||||
[settings.dots]
|
||||
templates = { source = "Templates", target = "Templates" }
|
||||
scripts = { source = "scripts", target = "scripts" }
|
||||
|
||||
editorconfig = { source = "home/editorconfig", target = ".editorconfig" }
|
||||
xinitrc = { source = "home/xinitrc", target = ".xinitrc" }
|
||||
|
||||
picom = { source = "config/picom.conf", target = ".config/picom.conf" }
|
||||
git = { source = "git/config", target = ".config/git/config" }
|
||||
|
||||
bash = { source = "bash", target = ".config/bash" }
|
||||
betterdiscord = { source = "BetterDiscord", target = ".config/BetterDiscord" }
|
||||
btop = { source = "btop", target = ".config/btop" }
|
||||
dunst = { source = "dunst", target = ".config/dunst" }
|
||||
fastfetch = { source = "fastfetch", target = ".config/fastfetch" }
|
||||
gtk2 = { source = "gtk/gtk-2.0", target = ".config/gtk-2.0" }
|
||||
gtk3 = { source = "gtk/gtk-3.0", target = ".config/gtk-3.0" }
|
||||
gtk4 = { source = "gtk/gtk-4.0", target = ".config/gtk-4.0" }
|
||||
gtk5 = { source = "gtk/gtk-5.0", target = ".config/gtk-5.0" }
|
||||
gtk6 = { source = "gtk/gtk-6.0", target = ".config/gtk-6.0" }
|
||||
i3 = { source = "i3", target = ".config/i3" }
|
||||
kitty = { source = "kitty", target = ".config/kitty" }
|
||||
lvim = { source = "lvim/config.lua", target = ".config/lvim/config.lua" }
|
||||
nvim = { source = "nvim", target = ".config/nvim" }
|
||||
pipewire = { source = "pipewire", target = ".config/pipewire" }
|
||||
polybar = { source = "polybar", target = ".config/polybar" }
|
||||
ranger = { source = "ranger", target = ".config/ranger" }
|
||||
rofi = { source = "rofi", target = ".config/rofi" }
|
||||
roficafmenu = { source = "rofi-cafmenu", target = ".config/rofi-cafmenu" }
|
||||
screenlayout = { source = "screenlayout", target = ".config/screenlayout" }
|
||||
vim = { source = "vim", target = ".config/vim" }
|
||||
X11 = { source = "X11", target = ".config/X11" }
|
||||
zsh = { source = "zsh", target = ".config/zsh" }
|
||||
|
||||
|
|
212
btop/btop.conf
Executable file
212
btop/btop.conf
Executable file
|
@ -0,0 +1,212 @@
|
|||
#? Config file for btop v. 1.2.13
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "Default"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = True
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = True
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = False
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = False
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = True
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
#* "block" has half the resolution of braille but uses more common characters.
|
||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||
graph_symbol = "braille"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_cpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_mem = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_net = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_proc = "default"
|
||||
|
||||
#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
|
||||
shown_boxes = "cpu net proc mem"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 2000
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "memory"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = False
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = True
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = True
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = True
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = False
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = True
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = True
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = False
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = False
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = True
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_upper = "total"
|
||||
|
||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_lower = "total"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = True
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = False
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = False
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = True
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = True
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = True
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||
#* Example: "4:0 5:1 6:3"
|
||||
cpu_core_map = ""
|
||||
|
||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = False
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = True
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = True
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
|
||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
|
||||
disks_filter = "exclude=/boot"
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = True
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = False
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = True
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = True
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = True
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = True
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = True
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = True
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = False
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = False
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = True
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = False
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = False
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = True
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = False
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = True
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "WARNING"
|
462
dunst/dunstrc
Normal file
462
dunst/dunstrc
Normal file
|
@ -0,0 +1,462 @@
|
|||
# See dunst(5) for all configuration options
|
||||
|
||||
[global]
|
||||
### Display ###
|
||||
|
||||
# Which monitor should the notifications be displayed on.
|
||||
monitor = 1
|
||||
|
||||
# Display notification on focused monitor. Possible modes are:
|
||||
# mouse: follow mouse pointer
|
||||
# keyboard: follow window with keyboard focus
|
||||
# none: don't follow anything
|
||||
#
|
||||
# "keyboard" needs a window manager that exports the
|
||||
# _NET_ACTIVE_WINDOW property.
|
||||
# This should be the case for almost all modern window managers.
|
||||
#
|
||||
# If this option is set to mouse or keyboard, the monitor option
|
||||
# will be ignored.
|
||||
follow = none
|
||||
|
||||
### Geometry ###
|
||||
|
||||
# dynamic width from 0 to 300
|
||||
# width = (0, 300)
|
||||
# constant width of 300
|
||||
width = 300
|
||||
|
||||
# The maximum height of a single notification, excluding the frame.
|
||||
height = 300
|
||||
|
||||
# Position the notification in the top right corner
|
||||
#origin = top-right
|
||||
origin = top-left
|
||||
|
||||
# Offset from the origin
|
||||
offset = 3x3
|
||||
|
||||
# Scale factor. It is auto-detected if value is 0.
|
||||
scale = 0
|
||||
|
||||
# Maximum number of notification (0 means no limit)
|
||||
notification_limit = 0
|
||||
|
||||
### Progress bar ###
|
||||
|
||||
# Turn on the progess bar. It appears when a progress hint is passed with
|
||||
# for example dunstify -h int:value:12
|
||||
progress_bar = true
|
||||
|
||||
# Set the progress bar height. This includes the frame, so make sure
|
||||
# it's at least twice as big as the frame width.
|
||||
progress_bar_height = 10
|
||||
|
||||
# Set the frame width of the progress bar
|
||||
progress_bar_frame_width = 1
|
||||
|
||||
# Set the minimum width for the progress bar
|
||||
progress_bar_min_width = 150
|
||||
|
||||
# Set the maximum width for the progress bar
|
||||
progress_bar_max_width = 300
|
||||
|
||||
|
||||
# Show how many messages are currently hidden (because of
|
||||
# notification_limit).
|
||||
indicate_hidden = yes
|
||||
|
||||
# The transparency of the window. Range: [0; 100].
|
||||
# This option will only work if a compositing window manager is
|
||||
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
|
||||
transparency = 0
|
||||
|
||||
# Draw a line of "separator_height" pixel height between two
|
||||
# notifications.
|
||||
# Set to 0 to disable.
|
||||
# If gap_size is greater than 0, this setting will be ignored.
|
||||
separator_height = 2
|
||||
|
||||
# Padding between text and separator.
|
||||
padding = 8
|
||||
|
||||
# Horizontal padding.
|
||||
horizontal_padding = 8
|
||||
|
||||
# Padding between text and icon.
|
||||
text_icon_padding = 0
|
||||
|
||||
# Defines width in pixels of frame around the notification window.
|
||||
# Set to 0 to disable.
|
||||
frame_width = 2
|
||||
|
||||
# Defines color of the frame around the notification window.
|
||||
#frame_color = "#c5c8c6"
|
||||
#frame_color = "#f0c674"
|
||||
|
||||
background = "#282a2e"
|
||||
|
||||
# Size of gap to display between notifications - requires a compositor.
|
||||
# If value is greater than 0, separator_height will be ignored and a border
|
||||
# of size frame_width will be drawn around each notification instead.
|
||||
# Click events on gaps do not currently propagate to applications below.
|
||||
gap_size = 0
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = frame
|
||||
|
||||
# Sort messages by urgency.
|
||||
sort = yes
|
||||
|
||||
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
||||
# for longer than idle_threshold seconds.
|
||||
# Set to 0 to disable.
|
||||
# A client can set the 'transient' hint to bypass this. See the rules
|
||||
# section for how to disable this if necessary
|
||||
# idle_threshold = 120
|
||||
|
||||
### Text ###
|
||||
|
||||
font = JetBrains Mono 10
|
||||
|
||||
# The spacing between lines. If the height is smaller than the
|
||||
# font height, it will get raised to the font height.
|
||||
line_height = 0
|
||||
|
||||
# Possible values are:
|
||||
# full: Allow a small subset of html markup in notifications:
|
||||
# <b>bold</b>
|
||||
# <i>italic</i>
|
||||
# <s>strikethrough</s>
|
||||
# <u>underline</u>
|
||||
#
|
||||
# For a complete reference see
|
||||
# <https://docs.gtk.org/Pango/pango_markup.html>.
|
||||
#
|
||||
# strip: This setting is provided for compatibility with some broken
|
||||
# clients that send markup even though it's not enabled on the
|
||||
# server. Dunst will try to strip the markup but the parsing is
|
||||
# simplistic so using this option outside of matching rules for
|
||||
# specific applications *IS GREATLY DISCOURAGED*.
|
||||
#
|
||||
# no: Disable markup parsing, incoming notifications will be treated as
|
||||
# plain text. Dunst will not advertise that it has the body-markup
|
||||
# capability if this is set as a global setting.
|
||||
#
|
||||
# It's important to note that markup inside the format option will be parsed
|
||||
# regardless of what this is set to.
|
||||
markup = full
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
# %s summary
|
||||
# %b body
|
||||
# %i iconname (including its path)
|
||||
# %I iconname (without its path)
|
||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||
# %n progress value if set without any extra characters
|
||||
# %% Literal %
|
||||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
# Alignment of message text.
|
||||
# Possible values are "left", "center" and "right".
|
||||
alignment = left
|
||||
|
||||
# Vertical alignment of message text and icon.
|
||||
# Possible values are "top", "center" and "bottom".
|
||||
vertical_alignment = center
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
# Set to -1 to disable.
|
||||
show_age_threshold = 60
|
||||
|
||||
# Specify where to make an ellipsis in long lines.
|
||||
# Possible values are "start", "middle" and "end".
|
||||
ellipsize = middle
|
||||
|
||||
# Ignore newlines '\n' in notifications.
|
||||
ignore_newline = no
|
||||
|
||||
# Stack together notifications with the same content
|
||||
stack_duplicates = true
|
||||
|
||||
# Hide the count of stacked notifications with the same content
|
||||
hide_duplicate_count = false
|
||||
|
||||
# Display indicators for URLs (U) and actions (A).
|
||||
show_indicators = yes
|
||||
|
||||
### Icons ###
|
||||
|
||||
# Recursive icon lookup. You can set a single theme, instead of having to
|
||||
# define all lookup paths.
|
||||
enable_recursive_icon_lookup = true
|
||||
|
||||
# Set icon theme (only used for recursive icon lookup)
|
||||
icon_theme = "Papirus, Adwaita"
|
||||
# You can also set multiple icon themes, with the leftmost one being used first.
|
||||
# icon_theme = "Adwaita, breeze"
|
||||
|
||||
# Align icons left/right/top/off
|
||||
icon_position = left
|
||||
|
||||
# Scale small icons up to this size, set to 0 to disable. Helpful
|
||||
# for e.g. small files or high-dpi screens. In case of conflict,
|
||||
# max_icon_size takes precedence over this.
|
||||
min_icon_size = 32
|
||||
|
||||
# Scale larger icons down to this size, set to 0 to disable
|
||||
#max_icon_size = 64
|
||||
max_icon_size = 48
|
||||
|
||||
# Paths to default icons (only neccesary when not using recursive icon lookup)
|
||||
#icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
|
||||
|
||||
### History ###
|
||||
|
||||
# Should a notification popped up from history be sticky or timeout
|
||||
# as if it would normally do.
|
||||
sticky_history = yes
|
||||
|
||||
# Maximum amount of notifications kept in history
|
||||
history_length = 20
|
||||
|
||||
### Misc/Advanced ###
|
||||
|
||||
# dmenu path.
|
||||
dmenu = /usr/bin/rofi -theme dmenu -p dunst:
|
||||
|
||||
# Browser for opening urls in context menu.
|
||||
# browser = /usr/bin/xdg-open
|
||||
browser = /usr/bin/firefox
|
||||
# Always run rule-defined scripts, even if the notification is suppressed
|
||||
always_run_script = true
|
||||
|
||||
# Define the title of the windows spawned by dunst
|
||||
title = Dunst
|
||||
|
||||
# Define the class of the windows spawned by dunst
|
||||
class = Dunst
|
||||
|
||||
# Define the corner radius of the notification window
|
||||
# in pixel size. If the radius is 0, you have no rounded
|
||||
# corners.
|
||||
# The radius will be automatically lowered if it exceeds half of the
|
||||
# notification height to avoid clipping text and/or icons.
|
||||
corner_radius = 8
|
||||
|
||||
# Ignore the dbus closeNotification message.
|
||||
# Useful to enforce the timeout set by dunst configuration. Without this
|
||||
# parameter, an application may close the notification sent before the
|
||||
# user defined timeout.
|
||||
ignore_dbusclose = false
|
||||
|
||||
### Wayland ###
|
||||
# These settings are Wayland-specific. They have no effect when using X11
|
||||
|
||||
# Uncomment this if you want to let notications appear under fullscreen
|
||||
# applications (default: overlay)
|
||||
# layer = top
|
||||
|
||||
# Set this to true to use X11 output on Wayland.
|
||||
force_xwayland = false
|
||||
|
||||
### Legacy
|
||||
|
||||
# Use the Xinerama extension instead of RandR for multi-monitor support.
|
||||
# This setting is provided for compatibility with older nVidia drivers that
|
||||
# do not support RandR and using it on systems that support RandR is highly
|
||||
# discouraged.
|
||||
#
|
||||
# By enabling this setting dunst will not be able to detect when a monitor
|
||||
# is connected or disconnected which might break follow mode if the screen
|
||||
# layout changes.
|
||||
force_xinerama = false
|
||||
|
||||
### mouse
|
||||
|
||||
# Defines list of actions for each mouse event
|
||||
# Possible values are:
|
||||
# * none: Don't do anything.
|
||||
# * do_action: Invoke the action determined by the action_name rule. If there is no
|
||||
# such action, open the context menu.
|
||||
# * open_url: If the notification has exactly one url, open it. If there are multiple
|
||||
# ones, open the context menu.
|
||||
# * close_current: Close current notification.
|
||||
# * close_all: Close all notifications.
|
||||
# * context: Open context menu for the notification.
|
||||
# * context_all: Open context menu for all notifications.
|
||||
# These values can be strung together for each mouse event, and
|
||||
# will be executed in sequence.
|
||||
mouse_left_click = do_action, close_current
|
||||
mouse_middle_click = close_current
|
||||
mouse_right_click = close_all
|
||||
|
||||
# Experimental features that may or may not work correctly. Do not expect them
|
||||
# to have a consistent behaviour across releases.
|
||||
[experimental]
|
||||
# Calculate the dpi to use on a per-monitor basis.
|
||||
# If this setting is enabled the Xft.dpi value will be ignored and instead
|
||||
# dunst will attempt to calculate an appropriate dpi value for each monitor
|
||||
# using the resolution and physical size. This might be useful in setups
|
||||
# where there are multiple screens with very different dpi values.
|
||||
per_monitor_dpi = false
|
||||
|
||||
|
||||
[urgency_low]
|
||||
# IMPORTANT: colors have to be defined in quotation marks.
|
||||
# Otherwise the "#" and following would be interpreted as a comment.
|
||||
#background = "#282a2e"
|
||||
#foreground = "#707880"
|
||||
foreground = "#c5c8c6"
|
||||
frame_color = "#c5c8c6"
|
||||
timeout = 10
|
||||
# Icon for notifications with low urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
[urgency_normal]
|
||||
#background = "#282a2e"
|
||||
foreground = "#c5c8c6"
|
||||
frame_color = "#f0c674"
|
||||
timeout = 10
|
||||
# Icon for notifications with normal urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
[urgency_critical]
|
||||
#background = "#282a2e"
|
||||
foreground = "#c5c8c6"
|
||||
frame_color = "#ff0000"
|
||||
timeout = 0
|
||||
# Icon for notifications with critical urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
#
|
||||
# Messages can be matched by
|
||||
# appname (discouraged, see desktop_entry)
|
||||
# body
|
||||
# category
|
||||
# desktop_entry
|
||||
# icon
|
||||
# match_transient
|
||||
# msg_urgency
|
||||
# stack_tag
|
||||
# summary
|
||||
#
|
||||
# and you can override the
|
||||
# background
|
||||
# foreground
|
||||
# format
|
||||
# frame_color
|
||||
# fullscreen
|
||||
# new_icon
|
||||
# set_stack_tag
|
||||
# set_transient
|
||||
# set_category
|
||||
# timeout
|
||||
# urgency
|
||||
# icon_position
|
||||
# skip_display
|
||||
# history_ignore
|
||||
# action_name
|
||||
# word_wrap
|
||||
# ellipsize
|
||||
# alignment
|
||||
# hide_text
|
||||
#
|
||||
# Shell-like globbing will get expanded.
|
||||
#
|
||||
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
|
||||
# GLib based applications export their desktop-entry name. In comparison to the appname,
|
||||
# the desktop-entry won't get localized.
|
||||
#
|
||||
# SCRIPTING
|
||||
# You can specify a script that gets run when the rule matches by
|
||||
# setting the "script" option.
|
||||
# The script will be called as follows:
|
||||
# script appname summary body icon urgency
|
||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||
#
|
||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||
# to find fitting options for rules.
|
||||
|
||||
# Disable the transient hint so that idle_threshold cannot be bypassed from the
|
||||
# client
|
||||
#[transient_disable]
|
||||
# match_transient = yes
|
||||
# set_transient = no
|
||||
#
|
||||
# Make the handling of transient notifications more strict by making them not
|
||||
# be placed in history.
|
||||
#[transient_history_ignore]
|
||||
# match_transient = yes
|
||||
# history_ignore = yes
|
||||
|
||||
# fullscreen values
|
||||
# show: show the notifications, regardless if there is a fullscreen window opened
|
||||
# delay: displays the new notification, if there is no fullscreen window active
|
||||
# If the notification is already drawn, it won't get undrawn.
|
||||
# pushback: same as delay, but when switching into fullscreen, the notification will get
|
||||
# withdrawn from screen again and will get delayed like a new notification
|
||||
#[fullscreen_delay_everything]
|
||||
# fullscreen = delay
|
||||
#[fullscreen_show_critical]
|
||||
# msg_urgency = critical
|
||||
# fullscreen = show
|
||||
|
||||
#[espeak]
|
||||
# summary = "*"
|
||||
# script = dunst_espeak.sh
|
||||
|
||||
#[script-test]
|
||||
# summary = "*script*"
|
||||
# script = dunst_test.sh
|
||||
|
||||
#[ignore]
|
||||
# # This notification will not be displayed
|
||||
# summary = "foobar"
|
||||
# skip_display = true
|
||||
|
||||
#[history-ignore]
|
||||
# # This notification will not be saved in history
|
||||
# summary = "foobar"
|
||||
# history_ignore = yes
|
||||
|
||||
#[skip-display]
|
||||
# # This notification will not be displayed, but will be included in the history
|
||||
# summary = "foobar"
|
||||
# skip_display = yes
|
||||
|
||||
#[signed_on]
|
||||
# appname = Pidgin
|
||||
# summary = "*signed on*"
|
||||
# urgency = low
|
||||
#
|
||||
#[signed_off]
|
||||
# appname = Pidgin
|
||||
# summary = *signed off*
|
||||
# urgency = low
|
||||
#
|
||||
#[says]
|
||||
# appname = Pidgin
|
||||
# summary = *says*
|
||||
# urgency = critical
|
||||
#
|
||||
#[twitter]
|
||||
# appname = Pidgin
|
||||
# summary = *twitter.com*
|
||||
# urgency = normal
|
||||
#
|
||||
#[stack-volumes]
|
||||
# appname = "some_volume_notifiers"
|
||||
# set_stack_tag = "volume"
|
||||
#
|
||||
# vim: ft=cfg
|
300
fastfetch/config.conf
Executable file
300
fastfetch/config.conf
Executable file
|
@ -0,0 +1,300 @@
|
|||
# Fastfetch configuration
|
||||
# Write every argument in different lines.
|
||||
# Direct arguments will overwrite the corresponding ones in this file.
|
||||
# Argument keys are not case sensitive.
|
||||
# Whitespaces are trimmed at the beginning and the end.
|
||||
# Empty lines or lines starting with # are ignored.
|
||||
|
||||
# This file was shipped with 1.5.5.
|
||||
# Use fastfetch --print-config > ~/.config/fastfetch/config.conf to overwrite this with the current defaults
|
||||
|
||||
# Below some often usefull options are listed. Uncomment and modify them so they take affect.
|
||||
# Note that there are a lot more options than the ones listed here, take a look at "fastfetch --help".
|
||||
# Of course all of them can be made persistent here too.
|
||||
|
||||
# Config option:
|
||||
# Load additional config files.
|
||||
# Some are shipped with fastfetch, list them with "fastfetch --list-presets".
|
||||
# Must be a path to a config file or the name of a shipped preset.
|
||||
# The config file is completly loaded before continuing in the current file, so the placement of this option matters, as later options overwrite already set ones.
|
||||
# Can be used multiple times to load multiple config files / presets.
|
||||
#--load-config /path/to/config.txt
|
||||
|
||||
# Structure option:
|
||||
# Sets the modules to use and their order.
|
||||
# Must be a list of module names, separated by colons.
|
||||
# List available modules with "fastfetch --list-modules".
|
||||
# Get the default structure with "fastfetch --print-structure".
|
||||
--structure Title:Separator:OS:Kernel:Packages:Shell:Resolution:WM:Terminal:TerminalFont:CPU:GPU:Memory:Disk:Break:Colors
|
||||
|
||||
# Multithreading option:
|
||||
# Sets if fastfetch should use multiple threads to detect the values.
|
||||
# Must be true or false.
|
||||
# Default is true.
|
||||
#--multithreading true
|
||||
|
||||
# Slow operations option:
|
||||
# Sets if fastfetch is allowed to use known slow operations to detect more / better values.
|
||||
# Must be true or false.
|
||||
# Default is false.
|
||||
#--allow-slow-operations false
|
||||
|
||||
# Linewrap option:
|
||||
# Sets if fastfetch should disable linewrap during the run.
|
||||
# Must be true or false.
|
||||
# Default is true.
|
||||
--disable-linewrap false
|
||||
|
||||
# Cursor option:
|
||||
# Sets if fastfetch should hide the console cursor during the run.
|
||||
# Must be true or false.
|
||||
# Default is true.
|
||||
#--hide-cursor true
|
||||
|
||||
# Logo option:
|
||||
# Sets the logo to use.
|
||||
# List available logos with "fastfetch --list-logos".
|
||||
# Print available logos with "fastfetch --print-logos".
|
||||
# Must be the name of an available logo or a path to a text file containing a custom logo.
|
||||
# Default is the current distribution.
|
||||
#--logo arch
|
||||
|
||||
# Logo type option:
|
||||
# Sets the logo type to use.
|
||||
# Must be auto, builtin, file, raw, sixel, kitty or chafa.
|
||||
# Default is auto.
|
||||
#--logo-type auto
|
||||
|
||||
# Logo width option:
|
||||
# Sets the width of the logo (in characters) if the logo is an image.
|
||||
# Must be a positive integer.
|
||||
# Default is 65.
|
||||
#--logo-width 65
|
||||
|
||||
# Logo height option:
|
||||
# Sets the height of the logo (in characters) if the logo is an image.
|
||||
# Must be a positive integer.
|
||||
# Default is 0 (keeps aspect ration).
|
||||
#--logo-height 0
|
||||
|
||||
# Logo color options:
|
||||
# Overwrite a color in the logo. Also works for user provided logos.
|
||||
# In the user logo, they replace $[1-9]. Use $$ to print a single $ sign.
|
||||
# Must be linux console color codes or the name of a color.
|
||||
# Default is the one specified by the logo.
|
||||
# Use "fastfetch --help color" to learn more and see examples.
|
||||
# Valid index range is [1-9].
|
||||
#--logo-color-1 red
|
||||
#--logo-color-2 32
|
||||
# [...]
|
||||
#--logo-color-9 yellow
|
||||
|
||||
# Logo padding option:
|
||||
# Adds a padding to the left and the right side of the logo.
|
||||
# Must be a positive integer.
|
||||
# Default is 0.
|
||||
#--logo-padding 0
|
||||
|
||||
# Logo padding left option:
|
||||
# Adds a padding to the left side of the logo.
|
||||
# Must be a positive integer.
|
||||
# Default is 0.
|
||||
#--logo-padding-left 0
|
||||
|
||||
# Logo padding right option:
|
||||
# Adds a padding to the right side of the logo.
|
||||
# Must be a positive integer.
|
||||
# Default is 0.
|
||||
#--logo-padding-right 0
|
||||
|
||||
# Logo print remaining option:
|
||||
# Sets if the remaining logo should be printed, it is has more lines than modules to show.
|
||||
# Must be true or false.
|
||||
# Default is true.
|
||||
#--logo-print-remaining true
|
||||
|
||||
# Color option:
|
||||
# Sets the color of the keys.
|
||||
# Must be linux console color codes or the name of a color.
|
||||
# Default is the primary color of the logo.
|
||||
# Use "fastfetch --help color" to learn more and see examples.
|
||||
#--color magenta
|
||||
|
||||
# Separator option:
|
||||
# Sets the string placed between a key and its value.
|
||||
# Can be any string.
|
||||
# Default is ": ".
|
||||
#--separator ": "
|
||||
|
||||
# Separator string option:
|
||||
# Sets the string printed by the "separator" module (usually between title and rest of output)
|
||||
# Must be any string. It is repated / cut to fit perfectly.
|
||||
# Default is "-"
|
||||
#--separator-string -
|
||||
|
||||
# Public IP timeout option:
|
||||
# Sets the time to wait for the public ip server to respond.
|
||||
# Must be a positive integer.
|
||||
# Default is 0 (disabled).
|
||||
#--public-ip-timeout 0
|
||||
|
||||
# OS file option
|
||||
# Sets the path to the file containing the operating system information.
|
||||
# Should be a valid path to an existing file.
|
||||
# Note that you might need to run fastfetch with --recache once for it to take affect.
|
||||
# Default is /etc/os-release.
|
||||
#--os-file /etc/os-release
|
||||
|
||||
# Player name option
|
||||
# Sets the name of the player. This is also used in song detection
|
||||
# Must be the exact name of the player or a dbus address (e.g. org.mpris.MediaPlayer2.spotify)
|
||||
# Default is the first match starting with org.mpris.MediaPlayer2.
|
||||
#--player-name spotify
|
||||
|
||||
# Escape bedrock option
|
||||
# Sets if fastfetch should escape the bedrock jail, if it detectes that it is running in one
|
||||
# Must be true or false.
|
||||
# Default is true.
|
||||
#--escape-bedrock true
|
||||
|
||||
# GL option
|
||||
# Sets with opengl context creation library to use
|
||||
# Must be either auto, egl, glx or osmesa
|
||||
# Default is auto.
|
||||
#--gl auto
|
||||
|
||||
# Key options:
|
||||
# Sets the displayed key of a module
|
||||
# Can be any string. Some of theme take an argument like a format string. See "fastfetch --help format" for help.
|
||||
#--os-key OS
|
||||
#--host-key Host
|
||||
#--kernel-key Kernel
|
||||
#--uptime-key Uptime
|
||||
#--processes-key Processes
|
||||
#--packages-key Packages
|
||||
#--shell-key Shell
|
||||
#--resolution-key Resolution {1}
|
||||
#--de-key DE
|
||||
#--wm-key WM
|
||||
#--wm-theme-key WM Theme
|
||||
#--theme-key Theme
|
||||
#--icons-key Icons
|
||||
#--font-key Font
|
||||
#--cursor-key Cursor
|
||||
#--terminal-key Terminal
|
||||
#--terminal-font-key Terminal Font
|
||||
#--cpu-key CPU
|
||||
#--cpu-usage-key CPU Usage
|
||||
#--gpu-key GPU {1}
|
||||
#--memory-key Memory
|
||||
#--disk-key Disk ({1})
|
||||
#--battery-key Battery {1}
|
||||
#--locale-key Locale
|
||||
#--local-ip-key Local IP ({1})
|
||||
#--public-ip-key Public IP
|
||||
#--player-key Media Player
|
||||
#--song-key Song
|
||||
#--datetime-key Date Time
|
||||
#--vulkan-key Vulkan
|
||||
#--opengl-key OpenGL
|
||||
#--opencl-key OpenCL
|
||||
|
||||
# Format options:
|
||||
# Sets the format string for module values.
|
||||
# For information on format strings, see "fastfetch --help format".
|
||||
# To see the parameter they take and their default value, see "fastfetch --help *-format", e.g. "fastfetch --help os-format".
|
||||
# An empty format string (As they are currently below) will behave as if it was not set.
|
||||
--os-format {3}
|
||||
#--host-format
|
||||
#--kernel-format
|
||||
#--uptime-format
|
||||
#--processes-format
|
||||
#--packages-format
|
||||
#--shell-format
|
||||
#--resolution-format
|
||||
#--de-format
|
||||
#--wm-format
|
||||
#--wm-theme-format
|
||||
#--theme-format
|
||||
#--icons-format
|
||||
#--font-format
|
||||
#--cursor-format
|
||||
#--terminal-format
|
||||
#--terminal-font-format
|
||||
--cpu-format {1}
|
||||
#--cpu-usage-format
|
||||
#--gpu-format
|
||||
#--memory-format
|
||||
#--disk-format
|
||||
#--battery-format
|
||||
#--locale-format
|
||||
#--local-ip-format
|
||||
#--public-ip-format
|
||||
#--player-format
|
||||
#--song-format
|
||||
#--datetime-format
|
||||
#--vulkan-format
|
||||
#--opengl-format
|
||||
#--opencl-format
|
||||
|
||||
# Error options:
|
||||
# Sets the format string to use if an error occured
|
||||
# For information on format strings, see "fastfetch --help format".
|
||||
# Each of them take the error as first and only argument.
|
||||
# If one of them is set, the module will appear, even if --show-errors is not given.
|
||||
#--os-error
|
||||
#--host-error
|
||||
#--kernel-error
|
||||
#--uptime-error
|
||||
#--processes-error
|
||||
#--packages-error
|
||||
#--shell-error
|
||||
#--resolution-error
|
||||
#--de-error
|
||||
#--wm-error
|
||||
#--wm-theme-error
|
||||
#--theme-error
|
||||
#--icons-error
|
||||
#--font-error
|
||||
#--cursor-error
|
||||
#--terminal-error
|
||||
#--terminal-font-error
|
||||
#--cpu-error
|
||||
#--cpu-usage-error
|
||||
#--gpu-error
|
||||
#--memory-error
|
||||
#--disk-error
|
||||
#--battery-error
|
||||
#--locale-error
|
||||
#--local-ip-error
|
||||
#--public-ip-error
|
||||
#--player-error
|
||||
#--song-error
|
||||
#--datetime-error
|
||||
#--vulkan-error
|
||||
#--opengl-error
|
||||
#--opencl-error
|
||||
|
||||
# Library options:
|
||||
# Sets an user specific path to a library to load.
|
||||
# Must be a valid path to a library.
|
||||
#--lib-PCI /usr/lib/libpci.so
|
||||
#--lib-vulkan /usr/lib/libvulkan.so
|
||||
#--lib-wayland /usr/lib/libwayland-client.so
|
||||
#--lib-xcb-randr /usr/lib/libxcb-randr.so
|
||||
#--lib-xcb /usr/lib/libxcb.so
|
||||
#--lib-Xrandr /usr/lib/libXrandr.so
|
||||
#--lib-X11 /usr/lib/libX11.so
|
||||
#--lib-gio /usr/lib/libgio-2.0.so
|
||||
#--lib-DConf /usr/lib/libdconf.so
|
||||
#--lib-DBus /usr/lib/libdbus-1.so
|
||||
#--lib-XFConf /usr/lib/libxfconf-0.so
|
||||
#--lib-sqlite3 /usr/lib/libsqlite3.so
|
||||
#--lib-rpm /usr/lib/librpm.so
|
||||
#--lib-imagemagick /usr/lib/libMagickCore-7.Q16HDRI.so
|
||||
#--lib-z /usr/lib/libz.so
|
||||
#--lib-chafa /usr/lib/libchafa.so
|
||||
#--lib-egl /usr/lib/libEGL.so
|
||||
#--lib-glx /usr/lib/libGLX.so
|
||||
#--lib-osmesa /usr/lib/libOSMesa.so
|
||||
#--lib-opencl /usr/lib/libOpenCL.so
|
16
git/config
Executable file
16
git/config
Executable file
|
@ -0,0 +1,16 @@
|
|||
[user]
|
||||
name = Michael Bradley
|
||||
[includeIf "gitdir:~/dev/"]
|
||||
path = ./config-personal
|
||||
[includeIf "gitdir:~/school/"]
|
||||
path = ./config-personal
|
||||
[includeIf "gitdir:~/work/"]
|
||||
path = ./config-work
|
||||
[core]
|
||||
editor = lvim
|
||||
[credential "https://github.com"]
|
||||
helper = !/usr/bin/gh auth git-credential
|
||||
[credential "https://gist.github.com"]
|
||||
helper = !/usr/bin/gh auth git-credential
|
||||
[init]
|
||||
defaultBranch = main
|
11
gtk/gtk-2.0/gtkfilechooser.ini
Normal file
11
gtk/gtk-2.0/gtkfilechooser.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Filechooser Settings]
|
||||
LocationMode=path-bar
|
||||
ShowHidden=false
|
||||
ShowSizeColumn=true
|
||||
GeometryX=2166
|
||||
GeometryY=49
|
||||
GeometryWidth=1428
|
||||
GeometryHeight=1023
|
||||
SortColumn=name
|
||||
SortOrder=ascending
|
||||
StartupMode=recent
|
1
gtk/gtk-3.0/bookmarks
Normal file
1
gtk/gtk-3.0/bookmarks
Normal file
|
@ -0,0 +1 @@
|
|||
file:///home/mbradley/school/3
|
2
gtk/gtk-3.0/settings.ini
Executable file
2
gtk/gtk-3.0/settings.ini
Executable file
|
@ -0,0 +1,2 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=1
|
2
gtk/gtk-4.0/settings.ini
Executable file
2
gtk/gtk-4.0/settings.ini
Executable file
|
@ -0,0 +1,2 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=1
|
2
gtk/gtk-5.0/settings.ini
Executable file
2
gtk/gtk-5.0/settings.ini
Executable file
|
@ -0,0 +1,2 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=1
|
2
gtk/gtk-6.0/settings.ini
Executable file
2
gtk/gtk-6.0/settings.ini
Executable file
|
@ -0,0 +1,2 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=1
|
204
i3/config
Executable file
204
i3/config
Executable file
|
@ -0,0 +1,204 @@
|
|||
set $mod Mod4
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font is used in the bar {} block below.
|
||||
font pango:JetBrains Mono 5
|
||||
|
||||
smart_borders on
|
||||
gaps inner 3
|
||||
|
||||
#Setup displays
|
||||
exec --no-startup-id ~/.config/screenlayout/monitor.sh
|
||||
exec --no-startup-id dex --autostart --environment i3
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
set $refresh_i3status killall -SIGUSR1 i3status
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
mouse_warping output
|
||||
|
||||
bindsym $mod+Return exec --no-startup-id "kitty"
|
||||
bindsym $mod+Shift+q kill
|
||||
bindsym Ctrl+Tab exec --no-startup-id "rofi -show drun file-browser-extended calc emoji cafmenu"
|
||||
bindsym $mod+Shift+s exec --no-startup-id "escrotum -s -C"
|
||||
bindsym $mod+Shift+p exec --no-startup-id peek
|
||||
bindsym $mod+Shift+l exec --no-startup-id i3lock-fancy-multimonitor -b=0x3
|
||||
bindsym $mod+Shift+z exec --no-startup-id firefox
|
||||
bindsym $mod+Shift+x exec --no-startup-id discord
|
||||
bindsym $mod+Shift+c exec --no-startup-id nautilus
|
||||
bindsym $mod+Shift+v exec --no-startup-id vlc
|
||||
bindsym $mod+Shift+g exec --no-startup-id /home/mbradley/scripts/steam.sh
|
||||
|
||||
# change focus
|
||||
#bindsym $mod+j focus left
|
||||
#bindsym $mod+k focus down
|
||||
#bindsym $mod+l focus up
|
||||
#bindsym $mod+semicolon focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
#bindsym $mod+Shift+j move left
|
||||
#bindsym $mod+Shift+k move down
|
||||
#bindsym $mod+Shift+l move up
|
||||
#bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal/vertical orientation
|
||||
bindsym $mod+h split h
|
||||
bindsym $mod+v split v
|
||||
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variable names to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
#set $monitor_left "DisplayPort-1"
|
||||
#set $monitor_right "DisplayPort-0"
|
||||
|
||||
#workspace $ws1 output $monitor_left
|
||||
#workspace $ws2 output $monitor_right
|
||||
#workspace $ws3 output $monitor_left
|
||||
#workspace $ws4 output $monitor_right
|
||||
#workspace $ws5 output $monitor_left
|
||||
#workspace $ws6 output $monitor_right
|
||||
#workspace $ws7 output $monitor_left
|
||||
#workspace $ws8 output $monitor_right
|
||||
#workspace $ws9 output $monitor_left
|
||||
#workspace $ws10 output $monitor_right
|
||||
|
||||
set $monitor_left "DisplayPort-1"
|
||||
set $monitor_right "DisplayPort-0"
|
||||
set $monitor_up "HDMI-A-0"
|
||||
|
||||
workspace $ws1 output $monitor_left
|
||||
workspace $ws2 output $monitor_right
|
||||
workspace $ws3 output $monitor_up
|
||||
workspace $ws4 output $monitor_left
|
||||
workspace $ws5 output $monitor_right
|
||||
workspace $ws6 output $monitor_up
|
||||
workspace $ws7 output $monitor_left
|
||||
workspace $ws8 output $monitor_right
|
||||
workspace $ws9 output $monitor_up
|
||||
workspace $ws10 output $monitor_left
|
||||
|
||||
# focus the parent container
|
||||
#bindsym $mod+a focus parent
|
||||
#bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||
#bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||
#bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||
#bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||
#bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||
#bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||
#bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||
#bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||
#bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||
#bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1, workspace number $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2, workspace number $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3, workspace number $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4, workspace number $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5, workspace number $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6, workspace number $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7, workspace number $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8, workspace number $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9, workspace number $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10, workspace number $ws10
|
||||
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
#bindsym j resize shrink width 10 px or 10 ppt
|
||||
#bindsym k resize grow height 10 px or 10 ppt
|
||||
#bindsym l resize shrink height 10 px or 10 ppt
|
||||
#bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 1 px or 1 ppt
|
||||
bindsym Down resize grow height 1 px or 1 ppt
|
||||
bindsym Up resize shrink height 1 px or 1 ppt
|
||||
bindsym Right resize grow width 1 px or 1 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
default_border none
|
||||
default_floating_border none
|
||||
new_window none
|
||||
for_window [all] border none
|
||||
hide_edge_borders both
|
||||
|
||||
# other commands
|
||||
exec_always --no-startup-id picom -b
|
||||
exec_always --no-startup-id /home/mbradley/.config/i3/feh.sh
|
||||
exec --no-startup-id redshift-gtk -l 44.631:-77.955
|
||||
|
||||
exec_always --no-startup-id polybar-msg cmd quit
|
||||
exec_always --no-startup-id polybar -r main
|
||||
exec_always --no-startup-id polybar -r other
|
||||
exec_always --no-startup-id polybar -r last
|
||||
exec --no-startup-id /usr/bin/dunst
|
||||
|
||||
exec --no-startup-id /home/mbradley/.config/i3/startup.sh
|
||||
|
||||
exec --no-startup-id /usr/bin/birdtray
|
||||
|
3
i3/feh.sh
Executable file
3
i3/feh.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
feh --no-fehbg --bg-fill --randomize /usr/share/backgrounds/Wallpapers/*
|
||||
|
105
i3/startup.json
Executable file
105
i3/startup.json
Executable file
|
@ -0,0 +1,105 @@
|
|||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 0,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1022,
|
||||
"width": 948,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"marks": [],
|
||||
"name": "i3-save-tree --workspace 2 > ~/.config/i3/startup.json",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^kitty$"
|
||||
// "instance": "^kitty$",
|
||||
// "machine": "^hpomen$",
|
||||
//"title": "clear"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
// splitv split container with 2 children
|
||||
"border": "none",
|
||||
"floating": "auto_off",
|
||||
"layout": "splitv",
|
||||
"marks": [],
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
// splith split container with 1 children
|
||||
"border": "none",
|
||||
"floating": "auto_off",
|
||||
"layout": "splith",
|
||||
"marks": [],
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
// splith split container with 1 children
|
||||
"border": "none",
|
||||
"floating": "auto_off",
|
||||
"layout": "splith",
|
||||
"marks": [],
|
||||
"percent": 1,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 0,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1022,
|
||||
"width": 948,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"marks": [],
|
||||
"name": "mbradley@hpomen:~",
|
||||
"percent": 1,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^kitty$"
|
||||
// "instance": "^kitty$",
|
||||
// "machine": "^hpomen$",
|
||||
//"title": "c"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 0,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1022,
|
||||
"width": 948,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"marks": [],
|
||||
"name": "btop",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^kitty$"
|
||||
// "instance": "^kitty$",
|
||||
// "machine": "^hpomen$",
|
||||
//"title": "^btop$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
21
i3/startup.sh
Executable file
21
i3/startup.sh
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/zsh
|
||||
|
||||
function cmd() {
|
||||
control_file="unix:/tmp/kittycommand-$(date +%s%N)-$*"
|
||||
kitty -o allow_remote_control="yes" --listen-on "$control_file" &
|
||||
sleep 1
|
||||
kitty @ --to "$control_file" send-text "$*\n"
|
||||
}
|
||||
|
||||
# /home/mbradley/scripts/mouse_sens.sh
|
||||
|
||||
i3-msg 'workspace 3; append_layout /home/mbradley/.config/i3/startup.json'
|
||||
sleep 0.1
|
||||
|
||||
cmd clear
|
||||
cmd c
|
||||
sleep 0.5
|
||||
cmd btop
|
||||
|
||||
i3-msg 'workspace 1'
|
||||
|
4
kitty/README.md
Normal file
4
kitty/README.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Kitty theme
|
||||
|
||||
Sourced from: https://github.com/dexpota/kitty-themes/blob/master/themes/3024_Night.conf
|
||||
|
2169
kitty/kitty.conf
Executable file
2169
kitty/kitty.conf
Executable file
File diff suppressed because it is too large
Load diff
2169
kitty/kitty/kitty.conf
Executable file
2169
kitty/kitty/kitty.conf
Executable file
File diff suppressed because it is too large
Load diff
21
kitty/kitty/theme.conf
Normal file
21
kitty/kitty/theme.conf
Normal file
|
@ -0,0 +1,21 @@
|
|||
background #090200
|
||||
foreground #a4a1a1
|
||||
cursor #a4a1a1
|
||||
selection_background #494542
|
||||
color0 #090200
|
||||
color8 #5b5754
|
||||
color1 #da2c20
|
||||
color9 #e8bacf
|
||||
color2 #00a152
|
||||
color10 #3a3332
|
||||
color3 #fcec02
|
||||
color11 #494542
|
||||
color4 #00a0e4
|
||||
color12 #7f7c7b
|
||||
color5 #a06994
|
||||
color13 #d6d4d3
|
||||
color6 #b5e4f4
|
||||
color14 #ccab53
|
||||
color7 #a4a1a1
|
||||
color15 #f7f7f7
|
||||
selection_foreground #090200
|
1
kitty/theme.conf
Symbolic link
1
kitty/theme.conf
Symbolic link
|
@ -0,0 +1 @@
|
|||
gh/kitty-themes/themes/3024_Night.conf
|
171
lvim/config.lua
Normal file
171
lvim/config.lua
Normal file
|
@ -0,0 +1,171 @@
|
|||
--[[
|
||||
THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT
|
||||
`lvim` is the global options object
|
||||
]]
|
||||
|
||||
lvim.transparent_window = true
|
||||
lvim.plugins = {
|
||||
{ "catppuccin/nvim" },
|
||||
{ "gpanders/editorconfig.nvim" },
|
||||
{
|
||||
'wfxr/minimap.vim',
|
||||
build = "cargo install --locked code-minimap",
|
||||
cmd = { "Minimap", "MinimapClose", "MinimapToggle", "MinimapRefresh", "MinimapUpdateHighlight" },
|
||||
config = function()
|
||||
vim.cmd("let g:minimap_width = 10")
|
||||
vim.cmd("let g:minimap_auto_start = 1")
|
||||
vim.cmd("let g:minimap_auto_start_win_enter = 1")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"windwp/nvim-ts-autotag",
|
||||
config = function()
|
||||
require("nvim-ts-autotag").setup()
|
||||
end,
|
||||
},
|
||||
{ "mrjones2014/nvim-ts-rainbow" },
|
||||
{
|
||||
"romgrk/nvim-treesitter-context",
|
||||
config = function()
|
||||
require("treesitter-context").setup {
|
||||
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
|
||||
throttle = true, -- Throttles plugin updates (may improve performance)
|
||||
max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
|
||||
patterns = { -- Match patterns for TS nodes. These get wrapped to match at word boundaries.
|
||||
-- For all filetypes
|
||||
-- Note that setting an entry here replaces all other patterns for this entry.
|
||||
-- By setting the 'default' entry below, you can control which nodes you want to
|
||||
-- appear in the context window.
|
||||
default = {
|
||||
'class',
|
||||
'function',
|
||||
'method',
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
},
|
||||
{
|
||||
"ray-x/lsp_signature.nvim",
|
||||
event = "BufRead",
|
||||
config = function() require "lsp_signature".on_attach() end,
|
||||
},
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
event = "BufRead",
|
||||
config = function()
|
||||
require("todo-comments").setup()
|
||||
end,
|
||||
},
|
||||
{ "ms-jpq/chadtree" },
|
||||
}
|
||||
|
||||
-- vim options
|
||||
--vim.opt.shiftwidth = 2
|
||||
--vim.opt.tabstop = 2
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.clipboard = "unnamedplus"
|
||||
vim.opt.wrap = true
|
||||
vim.opt.spell = true
|
||||
vim.opt.spelllang = "en"
|
||||
|
||||
-- general
|
||||
lvim.log.level = "info"
|
||||
lvim.format_on_save = {
|
||||
enabled = true,
|
||||
pattern = "*.lua",
|
||||
timeout = 1000,
|
||||
}
|
||||
-- to disable icons and use a minimalist setup, uncomment the following
|
||||
-- lvim.use_icons = false
|
||||
|
||||
-- keymappings <https://www.lunarvim.org/docs/configuration/keybindings>
|
||||
lvim.leader = "space"
|
||||
-- add your own keymapping
|
||||
lvim.keys.normal_mode["<C-s>"] = ":w<cr>"
|
||||
|
||||
-- lvim.keys.normal_mode["<S-l>"] = ":BufferLineCycleNext<CR>"
|
||||
-- lvim.keys.normal_mode["<S-h>"] = ":BufferLineCyclePrev<CR>"
|
||||
|
||||
-- -- Use which-key to add extra bindings with the leader-key prefix
|
||||
-- lvim.builtin.which_key.mappings["W"] = { "<cmd>noautocmd w<cr>", "Save without formatting" }
|
||||
-- lvim.builtin.which_key.mappings["P"] = { "<cmd>Telescope projects<CR>", "Projects" }
|
||||
|
||||
-- -- Change theme settings
|
||||
-- lvim.colorscheme = "lunar"
|
||||
|
||||
-- After changing plugin config exit and reopen LunarVim, Run :PackerSync
|
||||
lvim.builtin.alpha.active = true
|
||||
lvim.builtin.alpha.mode = "dashboard"
|
||||
lvim.builtin.terminal.active = true
|
||||
lvim.builtin.nvimtree.setup.view.side = "left"
|
||||
lvim.builtin.nvimtree.setup.renderer.icons.show.git = true
|
||||
|
||||
-- Automatically install missing parsers when entering buffer
|
||||
lvim.builtin.treesitter.auto_install = true
|
||||
lvim.builtin.treesitter.rainbow.enable = true
|
||||
|
||||
-- lvim.builtin.treesitter.ignore_install = { "haskell" }
|
||||
|
||||
-- -- generic LSP settings <https://www.lunarvim.org/docs/languages#lsp-support>
|
||||
|
||||
-- --- disable automatic installation of servers
|
||||
-- lvim.lsp.installer.setup.automatic_installation = false
|
||||
|
||||
-- ---configure a server manually. IMPORTANT: Requires `:LvimCacheReset` to take effect
|
||||
-- ---see the full default list `:lua =lvim.lsp.automatic_configuration.skipped_servers`
|
||||
-- vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" })
|
||||
-- local opts = {} -- check the lspconfig documentation for a list of all possible options
|
||||
-- require("lvim.lsp.manager").setup("pyright", opts)
|
||||
|
||||
-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. IMPORTANT: Requires `:LvimCacheReset` to take effect
|
||||
-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype
|
||||
-- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server)
|
||||
-- return server ~= "emmet_ls"
|
||||
-- end, lvim.lsp.automatic_configuration.skipped_servers)
|
||||
|
||||
-- -- you can set a custom on_attach function that will be used for all the language servers
|
||||
-- -- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
|
||||
-- lvim.lsp.on_attach_callback = function(client, bufnr)
|
||||
-- local function buf_set_option(...)
|
||||
-- vim.api.nvim_buf_set_option(bufnr, ...)
|
||||
-- end
|
||||
-- --Enable completion triggered by <c-x><c-o>
|
||||
-- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
|
||||
-- end
|
||||
|
||||
-- -- linters and formatters <https://www.lunarvim.org/docs/languages#lintingformatting>
|
||||
-- local formatters = require "lvim.lsp.null-ls.formatters"
|
||||
-- formatters.setup {
|
||||
-- { command = "stylua" },
|
||||
-- {
|
||||
-- command = "prettier",
|
||||
-- extra_args = { "--print-width", "100" },
|
||||
-- filetypes = { "typescript", "typescriptreact" },
|
||||
-- },
|
||||
-- }
|
||||
-- local linters = require "lvim.lsp.null-ls.linters"
|
||||
-- linters.setup {
|
||||
-- { command = "flake8", filetypes = { "python" } },
|
||||
-- {
|
||||
-- command = "shellcheck",
|
||||
-- args = { "--severity", "warning" },
|
||||
-- },
|
||||
-- }
|
||||
|
||||
-- -- Additional Plugins <https://www.lunarvim.org/docs/plugins#user-plugins>
|
||||
-- lvim.plugins = {
|
||||
-- {
|
||||
-- "folke/trouble.nvim",
|
||||
-- cmd = "TroubleToggle",
|
||||
-- },
|
||||
-- }
|
||||
|
||||
-- -- Autocommands (`:help autocmd`) <https://neovim.io/doc/user/autocmd.html>
|
||||
-- vim.api.nvim_create_autocmd("FileType", {
|
||||
-- pattern = "zsh",
|
||||
-- callback = function()
|
||||
-- -- let treesitter use bash highlight for zsh files as well
|
||||
-- require("nvim-treesitter.highlight").attach(0, "bash")
|
||||
-- end,
|
||||
-- })
|
15
nvim/init.vim
Executable file
15
nvim/init.vim
Executable file
|
@ -0,0 +1,15 @@
|
|||
set number
|
||||
tnoremap <Esc> <C-\><C-n>
|
||||
|
||||
call plug#begin()
|
||||
Plug 'ms-jpq/chadtree', {'branch': 'chad', 'do': 'python3 -m chadtree deps'}
|
||||
"Plug 'ms-jpq/coq_nvim', {'branch': 'coq'}
|
||||
"Plug 'ms-jpq/coq.artifacts', {'branch': 'artifacts'}
|
||||
Plug 'navarasu/onedark.nvim'
|
||||
Plug 'gpanders/editorconfig.nvim'
|
||||
call plug#end()
|
||||
|
||||
nnoremap <C-v> <cmd>CHADopen<cr>
|
||||
"let g:coq_settings = { 'auto_start': 'shut-up' }
|
||||
let g:onedark_config = { 'style': 'warmer', 'transparent': v:true }
|
||||
colorscheme onedark
|
12
pipewire/pipewire-pulse.conf.backup
Normal file
12
pipewire/pipewire-pulse.conf.backup
Normal file
|
@ -0,0 +1,12 @@
|
|||
pulse.rules = [
|
||||
{
|
||||
# Discord notification sounds fix
|
||||
matches = [ { application.process.binary = "Discord" } ]
|
||||
actions = {
|
||||
update-props = {
|
||||
pulse.min.quantum = 1024/48000
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
422
polybar/config.ini
Executable file
422
polybar/config.ini
Executable file
|
@ -0,0 +1,422 @@
|
|||
;==========================================================
|
||||
;
|
||||
;
|
||||
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
;
|
||||
;
|
||||
; To learn more about how to configure Polybar
|
||||
; go to https://github.com/polybar/polybar
|
||||
;
|
||||
; The README contains a lot of information
|
||||
;
|
||||
;==========================================================
|
||||
|
||||
[colors]
|
||||
transparent = #0000
|
||||
background = #AA282A2E
|
||||
background-alt = #AA373B41
|
||||
foreground = #C5C8C6
|
||||
primary = #F0C674
|
||||
secondary = #8ABEB7
|
||||
alert = #A54242
|
||||
disabled = #707880
|
||||
|
||||
|
||||
[global/wm]
|
||||
margin-bottom = 0
|
||||
|
||||
|
||||
[bar/base]
|
||||
width = 100%
|
||||
height = 24pt
|
||||
radius = 6
|
||||
; dpi = 96
|
||||
|
||||
background = ${colors.background}
|
||||
foreground = ${colors.foreground}
|
||||
|
||||
line-size = 3pt
|
||||
|
||||
border-top-size = 2.5pt
|
||||
border-bottom-size = 0pt
|
||||
border-right-size = 2.5pt
|
||||
border-left-size = 2.5pt
|
||||
border-color = #00000000
|
||||
|
||||
padding-left = 0
|
||||
padding-right = 1
|
||||
|
||||
module-margin = 1
|
||||
|
||||
separator = |
|
||||
separator-foreground = ${colors.disabled}
|
||||
|
||||
font-0 = "JetBrains Mono:10;2"
|
||||
font-1 = "MesloLGS NF:10;2"
|
||||
font-2 = "FontAwesome:10;2"
|
||||
|
||||
cursor-click = pointer
|
||||
cursor-scroll = ns-resize
|
||||
|
||||
enable-ipc = true
|
||||
|
||||
; wm-restack = i3
|
||||
; override-redirect = true
|
||||
|
||||
|
||||
[bar/main]
|
||||
inherit = bar/base
|
||||
monitor = DisplayPort-1
|
||||
|
||||
modules-left = xworkspaces xwindow
|
||||
; modules-right = pulseaudio date menu-power
|
||||
modules-right = pulseaudio dunst
|
||||
|
||||
|
||||
[bar/other]
|
||||
inherit = bar/base
|
||||
monitor = DisplayPort-0
|
||||
monitor-fallback = DisplayPort-1
|
||||
|
||||
; modules-left = xworkspaces dunst xwindow
|
||||
modules-left = xworkspaces system-usb-udev
|
||||
; modules-right = xbacklight filesystem hdd-filesystem memory cpu eth date menu-power
|
||||
modules-right = memory cpu eth date menu-power
|
||||
|
||||
|
||||
[bar/last]
|
||||
inherit = bar/base
|
||||
monitor = HDMI-A-0
|
||||
monitor-fallback = DisplayPort-1
|
||||
|
||||
modules-left = xworkspaces tray
|
||||
modules-right = xbacklight change-background wlan filesystem hdd-filesystem pulseaudio date
|
||||
|
||||
|
||||
[module/menu-apps]
|
||||
type = custom/menu
|
||||
|
||||
expand-right = false
|
||||
|
||||
menu-0-0 = %{F#88CC22}
|
||||
menu-0-0-exec = rofi -show drun
|
||||
menu-0-1 = %{F#FFF}ﬓ
|
||||
menu-0-1-exec = #menu-apps.open.1
|
||||
menu-0-2 = %{F-}
|
||||
menu-0-2-exec = #menu-apps.open.2
|
||||
menu-0-3 = %{F#FFFF00}
|
||||
menu-0-3-exec = #menu-apps.open.3
|
||||
|
||||
menu-1-0 = %{F-}
|
||||
menu-1-0-exec = escrotum -s -C
|
||||
menu-1-1 = %{F#F0C674}
|
||||
menu-1-1-exec = #menu-apps.open.0
|
||||
|
||||
menu-2-0 = %{F-}
|
||||
menu-2-0-exec = kitty
|
||||
menu-2-1 = %{F#0098FF}
|
||||
menu-2-1-exec = vscodium
|
||||
menu-2-2 = %{F#FE2857}
|
||||
menu-2-2-exec = jetbrains-toolbox
|
||||
menu-2-3 = %{F#F0C674}
|
||||
menu-2-3-exec = #menu-apps.open.0
|
||||
|
||||
menu-3-0 = %{F#0A84FF}
|
||||
menu-3-0-exec = thunderbird
|
||||
menu-3-1 = %{F#0572EC}
|
||||
menu-3-1-exec = 1password
|
||||
menu-3-2 = %{F#5865F2}ﭮ
|
||||
menu-3-2-exec = discord
|
||||
menu-3-3 = %{F#FF9400}
|
||||
menu-3-3-exec = firefox
|
||||
menu-3-4 = %{F#F0C674}
|
||||
menu-3-4-exec = #menu-apps.open.0
|
||||
|
||||
label-open = %{F#F0C674}
|
||||
label-close = %{F#F0C674}×
|
||||
label-separator = %{F#707880} %{F-}
|
||||
|
||||
|
||||
[module/menu-power]
|
||||
type = custom/menu
|
||||
|
||||
expand-right = false
|
||||
|
||||
menu-0-0 = %{F#007FFF}
|
||||
menu-0-0-exec = i3lock-fancy-multimonitor -b=0x3
|
||||
#menu-0-1 = %{F#00FF7F}鈴
|
||||
#menu-0-1-exec = systemctl suspend
|
||||
#menu-0-2 = %{F#7FFF00}
|
||||
#menu-0-2-exec = systemctl hibernate
|
||||
menu-0-1 = %{F#FF7F00}ﰇ
|
||||
menu-0-1-exec = reboot
|
||||
menu-0-2 = %{F#F00}
|
||||
menu-0-2-exec = shutdown now
|
||||
|
||||
label-open = %{F#F0C674}
|
||||
label-close = %{F#F0C674}×
|
||||
label-separator = "%{F-} "
|
||||
|
||||
[module/xworkspaces]
|
||||
type = internal/xworkspaces
|
||||
|
||||
pin-workspaces = true
|
||||
#enable-scroll = false
|
||||
|
||||
label-active = %name%
|
||||
label-active-background = ${colors.background-alt}
|
||||
label-active-underline= ${colors.primary}
|
||||
label-active-padding = 1
|
||||
|
||||
label-occupied = %name%
|
||||
label-occupied-padding = 1
|
||||
|
||||
label-urgent = %name%
|
||||
label-urgent-background = ${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %name%
|
||||
label-empty-foreground = ${colors.disabled}
|
||||
label-empty-padding = 1
|
||||
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
#label = %title:0:60:...%
|
||||
label = %title:0:164:...%
|
||||
|
||||
|
||||
[module/xbacklight]
|
||||
type = internal/xbacklight
|
||||
#output = HDMI-A-0
|
||||
#output = DisplayPort-1
|
||||
#output = DisplayPort-0
|
||||
label = %{colors.primary}BKL%{F-} %percentage%%
|
||||
|
||||
|
||||
[module/change-background]
|
||||
type = custom/script
|
||||
exec = ls
|
||||
format = <label>
|
||||
format-foreground = ${colors.primary}
|
||||
label =
|
||||
click-left = /home/mbradley/.config/i3/feh.sh
|
||||
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
interval = 25
|
||||
|
||||
mount-0 = /
|
||||
|
||||
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
||||
|
||||
label-unmounted = %mountpoint% not mounted
|
||||
label-unmounted-foreground = ${colors.disabled}
|
||||
|
||||
|
||||
[module/hdd-filesystem]
|
||||
type = internal/fs
|
||||
interval = 25
|
||||
|
||||
mount-0 = /home/mbradley/hdd
|
||||
|
||||
label-mounted = %{F#F0C674}hdd%{F-} %percentage_used%%
|
||||
|
||||
label-unmounted = %mountpoint% not mounted
|
||||
label-unmounted-foreground = ${colors.disabled}
|
||||
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
format-volume-prefix = "VOL "
|
||||
format-volume-prefix-foreground = ${colors.primary}
|
||||
format-volume = <label-volume>
|
||||
|
||||
label-volume = %percentage%%
|
||||
|
||||
label-muted = muted
|
||||
label-muted-foreground = ${colors.disabled}
|
||||
|
||||
|
||||
[module/xkeyboard]
|
||||
type = internal/xkeyboard
|
||||
blacklist-0 = num lock
|
||||
|
||||
label-layout = %layout%
|
||||
label-layout-foreground = ${colors.primary}
|
||||
|
||||
label-indicator-padding = 2
|
||||
label-indicator-margin = 1
|
||||
label-indicator-foreground = ${colors.background}
|
||||
label-indicator-background = ${colors.secondary}
|
||||
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 2
|
||||
format-prefix = "RAM "
|
||||
format-prefix-foreground = ${colors.primary}
|
||||
label = %percentage_used:2%%
|
||||
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
format-prefix = "CPU "
|
||||
format-prefix-foreground = ${colors.primary}
|
||||
label = %percentage-sum:2%%
|
||||
|
||||
|
||||
[network-base]
|
||||
type = internal/network
|
||||
interval = 5
|
||||
format-connected = <label-connected>
|
||||
format-disconnected = <label-disconnected>
|
||||
label-disconnected = %{F#F0C674}%ifname%%{F#707880} dc
|
||||
|
||||
|
||||
[module/wlan]
|
||||
inherit = network-base
|
||||
interface-type = wireless
|
||||
label-connected = %{F#F0C674}%ifname%%{F-} %netspeed%
|
||||
|
||||
|
||||
[module/eth]
|
||||
inherit = network-base
|
||||
interface-type = wired
|
||||
label-connected = %{F#F0C674}%ifname%%{F-} %netspeed%
|
||||
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1
|
||||
|
||||
date-alt = %H:%M
|
||||
date = %Y-%m-%d/%{F#F0C674}%H:%M:%S
|
||||
|
||||
label = %date%
|
||||
|
||||
|
||||
[module/temperature]
|
||||
type = internal/temperature
|
||||
|
||||
interval = 5
|
||||
|
||||
thermal-zone = 3
|
||||
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon6/temp1_input
|
||||
|
||||
base-temperature = 40
|
||||
warn-temperature = 80
|
||||
units = true
|
||||
|
||||
format = <label>
|
||||
format-warn = <label-warn>
|
||||
label = %temperature-c%
|
||||
|
||||
label-warn = CPU: %temperature-c%!
|
||||
label-warn-foreground = #f00
|
||||
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
|
||||
full-at = 99
|
||||
low-at = 25
|
||||
|
||||
battery = BAT0
|
||||
adapter = ADP1
|
||||
|
||||
poll-interval = 60
|
||||
|
||||
time-format = %H:%M:%S
|
||||
format-charging = %{F#F0C674}<animation-charging>%{F-} <label-charging>
|
||||
format-discharging = %{F#F0C674}<animation-discharging>%{F-} <label-discharging>
|
||||
format-low = %{F#F0C674}<animation-low>%{F-} <label-low>
|
||||
format-full = %{F#F0C674}
|
||||
|
||||
label-charging = %percentage%%
|
||||
label-discharging = %percentage%%
|
||||
label-full = %percentage%%
|
||||
label-low = %percentage%%
|
||||
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-3 =
|
||||
ramp-capacity-4 =
|
||||
|
||||
bar-capacity-width = 10
|
||||
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-3 =
|
||||
animation-charging-4 =
|
||||
animation-charging-framerate = 750
|
||||
|
||||
animation-discharging-0 =
|
||||
animation-discharging-1 =
|
||||
animation-discharging-2 =
|
||||
animation-discharging-3 =
|
||||
animation-discharging-4 =
|
||||
animation-discharging-framerate = 500
|
||||
|
||||
animation-low-0 =
|
||||
animation-low-1 =
|
||||
animation-low-framerate = 200
|
||||
|
||||
|
||||
[module/tray]
|
||||
type = internal/tray
|
||||
tray-spacing = 5px
|
||||
tray-size = 50%
|
||||
|
||||
|
||||
# https://github.com/JeanEdouardKevin/dunst-polybar
|
||||
[module/dunst]
|
||||
type = custom/ipc
|
||||
initial = 1
|
||||
format-foreground = ${colors.primary}
|
||||
|
||||
hook-0 = echo "%{A1:dunstctl set-paused true && polybar-msg hook dunst 2:}%{A}" &
|
||||
hook-1 = echo "%{A1:dunstctl set-paused false && polybar-msg hook dunst 1:}%{A}" &
|
||||
|
||||
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
pseudo-transparency = true
|
||||
|
||||
|
||||
#[module/backlight]
|
||||
#type = internal/backlight
|
||||
#card = nv_backlight
|
||||
#use-actual-brightness = true
|
||||
#enable-scroll = true
|
||||
|
||||
[module/mpd]
|
||||
type = internal/mpd
|
||||
host = /run/mpd
|
||||
|
||||
[module/player-mpris-tail]
|
||||
type = custom/script
|
||||
exec = /usr/share/polybar/scripts/player-mpris-tail.py -f '{icon} {artist} - {title}'
|
||||
tail = true
|
||||
click-left = /usr/share/polybar/scripts/player-mpris-tail.py previous &
|
||||
click-right = /usr/share/polybar/scripts/player-mpris-tail.py next &
|
||||
click-middle = /usr/share/polybar/scripts/player-mpris-tail.py play-pause &
|
||||
|
||||
[module/system-usb-udev]
|
||||
type = custom/script
|
||||
exec = /usr/share/polybar/scripts/system-usb-udev.sh
|
||||
tail = true
|
||||
click-left = /usr/share/polybar/scripts/system-usb-udev.sh --mount &
|
||||
click-right = /usr/share/polybar/scripts/system-usb-udev.sh --unmount &
|
||||
|
||||
; vim:ft=dosini
|
9
polybar/launch.sh
Executable file
9
polybar/launch.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q polybar
|
||||
# If all your bars have ipc enabled, you can also use
|
||||
# polybar-msg cmd quit
|
||||
|
||||
# Launch Polybar, using default config location ~/.config/polybar/config.ini
|
||||
polybar mybar 2>&1 | tee -a /tmp/polybar.log & disown
|
759
ranger/rc.conf
Executable file
759
ranger/rc.conf
Executable file
|
@ -0,0 +1,759 @@
|
|||
# ===================================================================
|
||||
# This file contains the default startup commands for ranger.
|
||||
# To change them, it is recommended to create either /etc/ranger/rc.conf
|
||||
# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
|
||||
# commands there.
|
||||
#
|
||||
# If you copy this whole file there, you may want to set the environment
|
||||
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
|
||||
#
|
||||
# The purpose of this file is mainly to define keybindings and settings.
|
||||
# For running more complex python code, please create a plugin in "plugins/" or
|
||||
# a command in "commands.py".
|
||||
#
|
||||
# Each line is a command that will be run before the user interface
|
||||
# is initialized. As a result, you can not use commands which rely
|
||||
# on the UI such as :delete or :mark.
|
||||
# ===================================================================
|
||||
|
||||
# ===================================================================
|
||||
# == Options
|
||||
# ===================================================================
|
||||
|
||||
# Which viewmode should be used? Possible values are:
|
||||
# miller: Use miller columns which show multiple levels of the hierarchy
|
||||
# multipane: Midnight-commander like multipane view showing all tabs next
|
||||
# to each other
|
||||
set viewmode miller
|
||||
#set viewmode multipane
|
||||
|
||||
# How many columns are there, and what are their relative widths?
|
||||
set column_ratios 1,3,4
|
||||
|
||||
# Which files should be hidden? (regular expression)
|
||||
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
|
||||
|
||||
# Show hidden files? You can toggle this by typing 'zh'
|
||||
set show_hidden true
|
||||
|
||||
# Ask for a confirmation when running the "delete" command?
|
||||
# Valid values are "always", "never", "multiple" (default)
|
||||
# With "multiple", ranger will ask only if you delete multiple files at once.
|
||||
set confirm_on_delete multiple
|
||||
|
||||
# Use non-default path for file preview script?
|
||||
# ranger ships with scope.sh, a script that calls external programs (see
|
||||
# README.md for dependencies) to preview images, archives, etc.
|
||||
set preview_script ~/.config/ranger/scope.sh
|
||||
|
||||
# Use the external preview script or display simple plain text or image previews?
|
||||
set use_preview_script true
|
||||
|
||||
# Automatically count files in the directory, even before entering them?
|
||||
set automatically_count_files true
|
||||
|
||||
# Open all images in this directory when running certain image viewers
|
||||
# like feh or sxiv? You can still open selected files by marking them.
|
||||
set open_all_images true
|
||||
|
||||
# Be aware of version control systems and display information.
|
||||
set vcs_aware true
|
||||
|
||||
# State of the four backends git, hg, bzr, svn. The possible states are
|
||||
# disabled, local (only show local info), enabled (show local and remote
|
||||
# information).
|
||||
set vcs_backend_git enabled
|
||||
set vcs_backend_hg disabled
|
||||
set vcs_backend_bzr disabled
|
||||
set vcs_backend_svn disabled
|
||||
|
||||
# Truncate the long commit messages to this length when shown in the statusbar.
|
||||
set vcs_msg_length 50
|
||||
|
||||
# Use one of the supported image preview protocols
|
||||
set preview_images true
|
||||
|
||||
# Set the preview image method. Supported methods:
|
||||
#
|
||||
# * w3m (default):
|
||||
# Preview images in full color with the external command "w3mimgpreview"?
|
||||
# This requires the console web browser "w3m" and a supported terminal.
|
||||
# It has been successfully tested with "xterm" and "urxvt" without tmux.
|
||||
#
|
||||
# * iterm2:
|
||||
# Preview images in full color using iTerm2 image previews
|
||||
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
|
||||
# with image preview support.
|
||||
#
|
||||
# This feature relies on the dimensions of the terminal's font. By default, a
|
||||
# width of 8 and height of 11 are used. To use other values, set the options
|
||||
# iterm2_font_width and iterm2_font_height to the desired values.
|
||||
#
|
||||
# * terminology:
|
||||
# Previews images in full color in the terminology terminal emulator.
|
||||
# Supports a wide variety of formats, even vector graphics like svg.
|
||||
#
|
||||
# * urxvt:
|
||||
# Preview images in full color using urxvt image backgrounds. This
|
||||
# requires using urxvt compiled with pixbuf support.
|
||||
#
|
||||
# * urxvt-full:
|
||||
# The same as urxvt but utilizing not only the preview pane but the
|
||||
# whole terminal window.
|
||||
#
|
||||
# * kitty:
|
||||
# Preview images in full color using kitty image protocol.
|
||||
# Requires python PIL or pillow library.
|
||||
# If ranger does not share the local filesystem with kitty
|
||||
# the transfer method is changed to encode the whole image;
|
||||
# while slower, this allows remote previews,
|
||||
# for example during an ssh session.
|
||||
# Tmux is unsupported.
|
||||
#
|
||||
# * ueberzug:
|
||||
# Preview images in full color with the external command "ueberzug".
|
||||
# Images are shown by using a child window.
|
||||
# Only for users who run X11 in GNU/Linux.
|
||||
set preview_images_method ueberzug
|
||||
|
||||
# Delay in seconds before displaying an image with the w3m method.
|
||||
# Increase it in case of experiencing display corruption.
|
||||
set w3m_delay 0.02
|
||||
|
||||
# Manually adjust the w3mimg offset when using a terminal which needs this
|
||||
set w3m_offset 0
|
||||
|
||||
# Default iTerm2 font size (see: preview_images_method: iterm2)
|
||||
set iterm2_font_width 8
|
||||
set iterm2_font_height 11
|
||||
|
||||
# Use a unicode "..." character to mark cut-off filenames?
|
||||
set unicode_ellipsis true
|
||||
|
||||
# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
|
||||
# Requires the python-bidi pip package
|
||||
set bidi_support false
|
||||
|
||||
# Show dotfiles in the bookmark preview box?
|
||||
set show_hidden_bookmarks true
|
||||
|
||||
# Which colorscheme to use? These colorschemes are available by default:
|
||||
# default, jungle, snow, solarized
|
||||
set colorscheme default
|
||||
|
||||
# Preview files on the rightmost column?
|
||||
# And collapse (shrink) the last column if there is nothing to preview?
|
||||
set preview_files true
|
||||
set preview_directories true
|
||||
set collapse_preview true
|
||||
|
||||
# Wrap long lines in plain text previews?
|
||||
set wrap_plaintext_previews false
|
||||
|
||||
# Save the console history on exit?
|
||||
set save_console_history true
|
||||
|
||||
# Draw the status bar on top of the browser window (default: bottom)
|
||||
set status_bar_on_top false
|
||||
|
||||
# Draw a progress bar in the status bar which displays the average state of all
|
||||
# currently running tasks which support progress bars?
|
||||
set draw_progress_bar_in_status_bar true
|
||||
|
||||
# Draw borders around columns? (separators, outline, both, or none)
|
||||
# Separators are vertical lines between columns.
|
||||
# Outline draws a box around all the columns.
|
||||
# Both combines the two.
|
||||
set draw_borders both
|
||||
|
||||
# Display the directory name in tabs?
|
||||
set dirname_in_tabs false
|
||||
|
||||
# Enable the mouse support?
|
||||
set mouse_enabled true
|
||||
|
||||
# Display the file size in the main column or status bar?
|
||||
set display_size_in_main_column true
|
||||
set display_size_in_status_bar true
|
||||
|
||||
# Display the free disk space in the status bar?
|
||||
set display_free_space_in_status_bar true
|
||||
|
||||
# Display files tags in all columns or only in main column?
|
||||
set display_tags_in_all_columns true
|
||||
|
||||
# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
|
||||
set update_title false
|
||||
|
||||
# Set the tmux/screen window-name to "ranger"?
|
||||
set update_tmux_title true
|
||||
|
||||
# Shorten the title if it gets long? The number defines how many
|
||||
# directories are displayed at once, 0 turns off this feature.
|
||||
set shorten_title 3
|
||||
|
||||
# Show hostname in titlebar?
|
||||
set hostname_in_titlebar true
|
||||
|
||||
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
|
||||
set tilde_in_titlebar false
|
||||
|
||||
# How many directory-changes or console-commands should be kept in history?
|
||||
set max_history_size 20
|
||||
set max_console_history_size 50
|
||||
|
||||
# Try to keep so much space between the top/bottom border when scrolling:
|
||||
set scroll_offset 8
|
||||
|
||||
# Flush the input after each key hit? (Noticeable when ranger lags)
|
||||
set flushinput true
|
||||
|
||||
# Padding on the right when there's no preview?
|
||||
# This allows you to click into the space to run the file.
|
||||
set padding_right true
|
||||
|
||||
# Save bookmarks (used with mX and `X) instantly?
|
||||
# This helps to synchronize bookmarks between multiple ranger
|
||||
# instances but leads to *slight* performance loss.
|
||||
# When false, bookmarks are saved when ranger is exited.
|
||||
set autosave_bookmarks true
|
||||
|
||||
# Save the "`" bookmark to disk. This can be used to switch to the last
|
||||
# directory by typing "``".
|
||||
set save_backtick_bookmark true
|
||||
|
||||
# You can display the "real" cumulative size of directories by using the
|
||||
# command :get_cumulative_size or typing "dc". The size is expensive to
|
||||
# calculate and will not be updated automatically. You can choose
|
||||
# to update it automatically though by turning on this option:
|
||||
set autoupdate_cumulative_size false
|
||||
|
||||
# Turning this on makes sense for screen readers:
|
||||
set show_cursor false
|
||||
|
||||
# One of: size, natural, basename, atime, ctime, mtime, type, random
|
||||
set sort natural
|
||||
|
||||
# Additional sorting options
|
||||
set sort_reverse false
|
||||
set sort_case_insensitive true
|
||||
set sort_directories_first true
|
||||
set sort_unicode false
|
||||
|
||||
# Enable this if key combinations with the Alt Key don't work for you.
|
||||
# (Especially on xterm)
|
||||
set xterm_alt_key false
|
||||
|
||||
# Whether to include bookmarks in cd command
|
||||
set cd_bookmarks true
|
||||
|
||||
# Changes case sensitivity for the cd command tab completion
|
||||
set cd_tab_case sensitive
|
||||
|
||||
# Use fuzzy tab completion with the "cd" command. For example,
|
||||
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
|
||||
set cd_tab_fuzzy false
|
||||
|
||||
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
|
||||
# disable this feature.
|
||||
set preview_max_size 0
|
||||
|
||||
# The key hint lists up to this size have their sublists expanded.
|
||||
# Otherwise the submaps are replaced with "...".
|
||||
set hint_collapse_threshold 10
|
||||
|
||||
# Add the highlighted file to the path in the titlebar
|
||||
set show_selection_in_titlebar true
|
||||
|
||||
# The delay that ranger idly waits for user input, in milliseconds, with a
|
||||
# resolution of 100ms. Lower delay reduces lag between directory updates but
|
||||
# increases CPU load.
|
||||
set idle_delay 2000
|
||||
|
||||
# When the metadata manager module looks for metadata, should it only look for
|
||||
# a ".metadata.json" file in the current directory, or do a deep search and
|
||||
# check all directories above the current one as well?
|
||||
set metadata_deep_search false
|
||||
|
||||
# Clear all existing filters when leaving a directory
|
||||
set clear_filters_on_dir_change false
|
||||
|
||||
# Disable displaying line numbers in main column.
|
||||
# Possible values: false, absolute, relative.
|
||||
set line_numbers false
|
||||
|
||||
# When line_numbers=relative show the absolute line number in the
|
||||
# current line.
|
||||
set relative_current_zero false
|
||||
|
||||
# Start line numbers from 1 instead of 0
|
||||
set one_indexed false
|
||||
|
||||
# Save tabs on exit
|
||||
set save_tabs_on_exit false
|
||||
|
||||
# Enable scroll wrapping - moving down while on the last item will wrap around to
|
||||
# the top and vice versa.
|
||||
set wrap_scroll false
|
||||
|
||||
# Set the global_inode_type_filter to nothing. Possible options: d, f and l for
|
||||
# directories, files and symlinks respectively.
|
||||
set global_inode_type_filter
|
||||
|
||||
# This setting allows to freeze the list of files to save I/O bandwidth. It
|
||||
# should be 'false' during start-up, but you can toggle it by pressing F.
|
||||
set freeze_files false
|
||||
|
||||
# Print file sizes in bytes instead of the default human-readable format.
|
||||
set size_in_bytes false
|
||||
|
||||
# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
|
||||
# give a warning when you nest ranger in a subshell started by ranger.
|
||||
# Special value "error" makes the warning more visible.
|
||||
set nested_ranger_warning true
|
||||
|
||||
# ===================================================================
|
||||
# == Local Options
|
||||
# ===================================================================
|
||||
# You can set local options that only affect a single directory.
|
||||
|
||||
# Examples:
|
||||
# setlocal path=~/downloads sort mtime
|
||||
|
||||
# ===================================================================
|
||||
# == Command Aliases in the Console
|
||||
# ===================================================================
|
||||
|
||||
alias e edit
|
||||
alias q quit
|
||||
alias q! quit!
|
||||
alias qa quitall
|
||||
alias qa! quitall!
|
||||
alias qall quitall
|
||||
alias qall! quitall!
|
||||
alias setl setlocal
|
||||
|
||||
alias filter scout -prts
|
||||
alias find scout -aets
|
||||
alias mark scout -mr
|
||||
alias unmark scout -Mr
|
||||
alias search scout -rs
|
||||
alias search_inc scout -rts
|
||||
alias travel scout -aefklst
|
||||
|
||||
# ===================================================================
|
||||
# == Define keys for the browser
|
||||
# ===================================================================
|
||||
|
||||
# Basic
|
||||
map Q quitall
|
||||
map q quit
|
||||
copymap q ZZ ZQ
|
||||
|
||||
map R reload_cwd
|
||||
map F set freeze_files!
|
||||
map <C-r> reset
|
||||
map <C-l> redraw_window
|
||||
map <C-c> abort
|
||||
map <esc> change_mode normal
|
||||
map ~ set viewmode!
|
||||
|
||||
map i display_file
|
||||
map <A-j> scroll_preview 1
|
||||
map <A-k> scroll_preview -1
|
||||
map ? help
|
||||
map W display_log
|
||||
map w taskview_open
|
||||
map S shell $SHELL
|
||||
|
||||
map : console
|
||||
map ; console
|
||||
map ! console shell%space
|
||||
map @ console -p6 shell %%s
|
||||
map # console shell -p%space
|
||||
map s console shell%space
|
||||
map r chain draw_possible_programs; console open_with%space
|
||||
map f console find%space
|
||||
map cd console cd%space
|
||||
|
||||
map <C-p> chain console; eval fm.ui.console.history_move(-1)
|
||||
|
||||
# Change the line mode
|
||||
map Mf linemode filename
|
||||
map Mi linemode fileinfo
|
||||
map Mm linemode mtime
|
||||
map Mh linemode humanreadablemtime
|
||||
map Mp linemode permissions
|
||||
map Ms linemode sizemtime
|
||||
map MH linemode sizehumanreadablemtime
|
||||
map Mt linemode metatitle
|
||||
|
||||
# Tagging / Marking
|
||||
map t tag_toggle
|
||||
map ut tag_remove
|
||||
map "<any> tag_toggle tag=%any
|
||||
map <Space> mark_files toggle=True
|
||||
map v mark_files all=True toggle=True
|
||||
map uv mark_files all=True val=False
|
||||
map V toggle_visual_mode
|
||||
map uV toggle_visual_mode reverse=True
|
||||
|
||||
# For the nostalgics: Midnight Commander bindings
|
||||
map <F1> help
|
||||
map <F2> rename_append
|
||||
map <F3> display_file
|
||||
map <F4> edit
|
||||
map <F5> copy
|
||||
map <F6> cut
|
||||
map <F7> console mkdir%space
|
||||
map <F8> console delete
|
||||
#map <F8> console trash
|
||||
map <F10> exit
|
||||
|
||||
# In case you work on a keyboard with dvorak layout
|
||||
map <UP> move up=1
|
||||
map <DOWN> move down=1
|
||||
map <LEFT> move left=1
|
||||
map <RIGHT> move right=1
|
||||
map <HOME> move to=0
|
||||
map <END> move to=-1
|
||||
map <PAGEDOWN> move down=1 pages=True
|
||||
map <PAGEUP> move up=1 pages=True
|
||||
map <CR> move right=1
|
||||
#map <DELETE> console delete
|
||||
map <INSERT> console touch%space
|
||||
|
||||
# VIM-like
|
||||
copymap <UP> k
|
||||
copymap <DOWN> j
|
||||
copymap <LEFT> h
|
||||
copymap <RIGHT> l
|
||||
copymap <HOME> gg
|
||||
copymap <END> G
|
||||
copymap <PAGEDOWN> <C-F>
|
||||
copymap <PAGEUP> <C-B>
|
||||
|
||||
map J move down=0.5 pages=True
|
||||
map K move up=0.5 pages=True
|
||||
copymap J <C-D>
|
||||
copymap K <C-U>
|
||||
|
||||
# Jumping around
|
||||
map H history_go -1
|
||||
map L history_go 1
|
||||
map ] move_parent 1
|
||||
map [ move_parent -1
|
||||
map } traverse
|
||||
map { traverse_backwards
|
||||
map ) jump_non
|
||||
|
||||
map gh cd ~
|
||||
map ge cd /etc
|
||||
map gu cd /usr
|
||||
map gd cd /dev
|
||||
map gl cd -r .
|
||||
map gL cd -r %f
|
||||
map go cd /opt
|
||||
map gv cd /var
|
||||
map gm cd /media
|
||||
map gi eval fm.cd('/run/media/' + os.getenv('USER'))
|
||||
map gM cd /mnt
|
||||
map gs cd /srv
|
||||
map gp cd /tmp
|
||||
map gr cd /
|
||||
map gR eval fm.cd(ranger.RANGERDIR)
|
||||
map g/ cd /
|
||||
map g? cd /usr/share/doc/ranger
|
||||
|
||||
# External Programs
|
||||
map E edit
|
||||
map du shell -p du --max-depth=1 -h --apparent-size
|
||||
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
|
||||
map yp yank path
|
||||
map yd yank dir
|
||||
map yn yank name
|
||||
map y. yank name_without_extension
|
||||
|
||||
# Filesystem Operations
|
||||
map = chmod
|
||||
|
||||
map cw console rename%space
|
||||
map a rename_append
|
||||
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
|
||||
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
|
||||
|
||||
map pp paste
|
||||
map po paste overwrite=True
|
||||
map pP paste append=True
|
||||
map pO paste overwrite=True append=True
|
||||
map pl paste_symlink relative=False
|
||||
map pL paste_symlink relative=True
|
||||
map phl paste_hardlink
|
||||
map pht paste_hardlinked_subtree
|
||||
map pd console paste dest=
|
||||
map p`<any> paste dest=%any_path
|
||||
map p'<any> paste dest=%any_path
|
||||
|
||||
map dD console delete
|
||||
map dT console trash
|
||||
|
||||
map dd cut
|
||||
map ud uncut
|
||||
map da cut mode=add
|
||||
map dr cut mode=remove
|
||||
map dt cut mode=toggle
|
||||
|
||||
map yy copy
|
||||
map uy uncut
|
||||
map ya copy mode=add
|
||||
map yr copy mode=remove
|
||||
map yt copy mode=toggle
|
||||
|
||||
# Temporary workarounds
|
||||
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
|
||||
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
|
||||
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
|
||||
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
|
||||
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
|
||||
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
|
||||
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
|
||||
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
|
||||
|
||||
# Searching
|
||||
map / console search%space
|
||||
map n search_next
|
||||
map N search_next forward=False
|
||||
map ct search_next order=tag
|
||||
map cs search_next order=size
|
||||
map ci search_next order=mimetype
|
||||
map cc search_next order=ctime
|
||||
map cm search_next order=mtime
|
||||
map ca search_next order=atime
|
||||
|
||||
# Tabs
|
||||
map <C-n> tab_new
|
||||
map <C-w> tab_close
|
||||
map <TAB> tab_move 1
|
||||
map <S-TAB> tab_move -1
|
||||
map <A-Right> tab_move 1
|
||||
map <A-Left> tab_move -1
|
||||
map gt tab_move 1
|
||||
map gT tab_move -1
|
||||
map gn tab_new
|
||||
map gc tab_close
|
||||
map uq tab_restore
|
||||
map <a-1> tab_open 1
|
||||
map <a-2> tab_open 2
|
||||
map <a-3> tab_open 3
|
||||
map <a-4> tab_open 4
|
||||
map <a-5> tab_open 5
|
||||
map <a-6> tab_open 6
|
||||
map <a-7> tab_open 7
|
||||
map <a-8> tab_open 8
|
||||
map <a-9> tab_open 9
|
||||
map <a-r> tab_shift 1
|
||||
map <a-l> tab_shift -1
|
||||
|
||||
# Sorting
|
||||
map or set sort_reverse!
|
||||
map oz set sort=random
|
||||
map os chain set sort=size; set sort_reverse=False
|
||||
map ob chain set sort=basename; set sort_reverse=False
|
||||
map on chain set sort=natural; set sort_reverse=False
|
||||
map om chain set sort=mtime; set sort_reverse=False
|
||||
map oc chain set sort=ctime; set sort_reverse=False
|
||||
map oa chain set sort=atime; set sort_reverse=False
|
||||
map ot chain set sort=type; set sort_reverse=False
|
||||
map oe chain set sort=extension; set sort_reverse=False
|
||||
|
||||
map oS chain set sort=size; set sort_reverse=True
|
||||
map oB chain set sort=basename; set sort_reverse=True
|
||||
map oN chain set sort=natural; set sort_reverse=True
|
||||
map oM chain set sort=mtime; set sort_reverse=True
|
||||
map oC chain set sort=ctime; set sort_reverse=True
|
||||
map oA chain set sort=atime; set sort_reverse=True
|
||||
map oT chain set sort=type; set sort_reverse=True
|
||||
map oE chain set sort=extension; set sort_reverse=True
|
||||
|
||||
map dc get_cumulative_size
|
||||
|
||||
# Settings
|
||||
map zc set collapse_preview!
|
||||
map zd set sort_directories_first!
|
||||
map zh set show_hidden!
|
||||
map <C-h> set show_hidden!
|
||||
copymap <C-h> <backspace>
|
||||
copymap <backspace> <backspace2>
|
||||
map zI set flushinput!
|
||||
map zi set preview_images!
|
||||
map zm set mouse_enabled!
|
||||
map zp set preview_files!
|
||||
map zP set preview_directories!
|
||||
map zs set sort_case_insensitive!
|
||||
map zu set autoupdate_cumulative_size!
|
||||
map zv set use_preview_script!
|
||||
map zf console filter%space
|
||||
copymap zf zz
|
||||
|
||||
# Filter stack
|
||||
map .d filter_stack add type d
|
||||
map .f filter_stack add type f
|
||||
map .l filter_stack add type l
|
||||
map .m console filter_stack add mime%space
|
||||
map .n console filter_stack add name%space
|
||||
map .# console filter_stack add hash%space
|
||||
map ." filter_stack add duplicate
|
||||
map .' filter_stack add unique
|
||||
map .| filter_stack add or
|
||||
map .& filter_stack add and
|
||||
map .! filter_stack add not
|
||||
map .r filter_stack rotate
|
||||
map .c filter_stack clear
|
||||
map .* filter_stack decompose
|
||||
map .p filter_stack pop
|
||||
map .. filter_stack show
|
||||
|
||||
# Bookmarks
|
||||
map `<any> enter_bookmark %any
|
||||
map '<any> enter_bookmark %any
|
||||
map m<any> set_bookmark %any
|
||||
map um<any> unset_bookmark %any
|
||||
|
||||
map m<bg> draw_bookmarks
|
||||
copymap m<bg> um<bg> `<bg> '<bg>
|
||||
|
||||
# Generate all the chmod bindings with some python help:
|
||||
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
|
||||
|
||||
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
|
||||
|
||||
# ===================================================================
|
||||
# == Define keys for the console
|
||||
# ===================================================================
|
||||
# Note: Unmapped keys are passed directly to the console.
|
||||
|
||||
# Basic
|
||||
cmap <tab> eval fm.ui.console.tab()
|
||||
cmap <s-tab> eval fm.ui.console.tab(-1)
|
||||
cmap <ESC> eval fm.ui.console.close()
|
||||
cmap <CR> eval fm.ui.console.execute()
|
||||
cmap <C-l> redraw_window
|
||||
|
||||
copycmap <ESC> <C-c>
|
||||
copycmap <CR> <C-j>
|
||||
|
||||
# Move around
|
||||
cmap <up> eval fm.ui.console.history_move(-1)
|
||||
cmap <down> eval fm.ui.console.history_move(1)
|
||||
cmap <left> eval fm.ui.console.move(left=1)
|
||||
cmap <right> eval fm.ui.console.move(right=1)
|
||||
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
||||
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
||||
cmap <a-b> eval fm.ui.console.move_word(left=1)
|
||||
cmap <a-f> eval fm.ui.console.move_word(right=1)
|
||||
|
||||
copycmap <a-b> <a-left>
|
||||
copycmap <a-f> <a-right>
|
||||
|
||||
# Line Editing
|
||||
cmap <backspace> eval fm.ui.console.delete(-1)
|
||||
cmap <delete> eval fm.ui.console.delete(0)
|
||||
cmap <C-w> eval fm.ui.console.delete_word()
|
||||
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
||||
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
||||
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
||||
cmap <C-y> eval fm.ui.console.paste()
|
||||
|
||||
# And of course the emacs way
|
||||
copycmap <ESC> <C-g>
|
||||
copycmap <up> <C-p>
|
||||
copycmap <down> <C-n>
|
||||
copycmap <left> <C-b>
|
||||
copycmap <right> <C-f>
|
||||
copycmap <home> <C-a>
|
||||
copycmap <end> <C-e>
|
||||
copycmap <delete> <C-d>
|
||||
copycmap <backspace> <C-h>
|
||||
|
||||
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
||||
# and <backspace2> (code 127). To be sure, use both.
|
||||
copycmap <backspace> <backspace2>
|
||||
|
||||
# This special expression allows typing in numerals:
|
||||
cmap <allow_quantifiers> false
|
||||
|
||||
# ===================================================================
|
||||
# == Pager Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
pmap <down> pager_move down=1
|
||||
pmap <up> pager_move up=1
|
||||
pmap <left> pager_move left=4
|
||||
pmap <right> pager_move right=4
|
||||
pmap <home> pager_move to=0
|
||||
pmap <end> pager_move to=-1
|
||||
pmap <pagedown> pager_move down=1.0 pages=True
|
||||
pmap <pageup> pager_move up=1.0 pages=True
|
||||
pmap <C-d> pager_move down=0.5 pages=True
|
||||
pmap <C-u> pager_move up=0.5 pages=True
|
||||
|
||||
copypmap <UP> k <C-p>
|
||||
copypmap <DOWN> j <C-n> <CR>
|
||||
copypmap <LEFT> h
|
||||
copypmap <RIGHT> l
|
||||
copypmap <HOME> g
|
||||
copypmap <END> G
|
||||
copypmap <C-d> d
|
||||
copypmap <C-u> u
|
||||
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copypmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Basic
|
||||
pmap <C-l> redraw_window
|
||||
pmap <ESC> pager_close
|
||||
copypmap <ESC> q Q i <F3>
|
||||
pmap E edit_file
|
||||
|
||||
# ===================================================================
|
||||
# == Taskview Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
tmap <up> taskview_move up=1
|
||||
tmap <down> taskview_move down=1
|
||||
tmap <home> taskview_move to=0
|
||||
tmap <end> taskview_move to=-1
|
||||
tmap <pagedown> taskview_move down=1.0 pages=True
|
||||
tmap <pageup> taskview_move up=1.0 pages=True
|
||||
tmap <C-d> taskview_move down=0.5 pages=True
|
||||
tmap <C-u> taskview_move up=0.5 pages=True
|
||||
|
||||
copytmap <UP> k <C-p>
|
||||
copytmap <DOWN> j <C-n> <CR>
|
||||
copytmap <HOME> g
|
||||
copytmap <END> G
|
||||
copytmap <C-u> u
|
||||
copytmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copytmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Changing priority and deleting tasks
|
||||
tmap J eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap K eval -q fm.ui.taskview.task_move(0)
|
||||
tmap dd eval -q fm.ui.taskview.task_remove()
|
||||
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
||||
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
||||
|
||||
# Basic
|
||||
tmap <C-l> redraw_window
|
||||
tmap <ESC> taskview_close
|
||||
copytmap <ESC> q Q w <C-c>
|
350
ranger/scope.sh
Executable file
350
ranger/scope.sh
Executable file
|
@ -0,0 +1,350 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -o noclobber -o noglob -o nounset -o pipefail
|
||||
IFS=$'\n'
|
||||
|
||||
## If the option `use_preview_script` is set to `true`,
|
||||
## then this script will be called and its output will be displayed in ranger.
|
||||
## ANSI color codes are supported.
|
||||
## STDIN is disabled, so interactive scripts won't work properly
|
||||
|
||||
## This script is considered a configuration file and must be updated manually.
|
||||
## It will be left untouched if you upgrade ranger.
|
||||
|
||||
## Because of some automated testing we do on the script #'s for comments need
|
||||
## to be doubled up. Code that is commented out, because it's an alternative for
|
||||
## example, gets only one #.
|
||||
|
||||
## Meanings of exit codes:
|
||||
## code | meaning | action of ranger
|
||||
## -----+------------+-------------------------------------------
|
||||
## 0 | success | Display stdout as preview
|
||||
## 1 | no preview | Display no preview at all
|
||||
## 2 | plain text | Display the plain content of the file
|
||||
## 3 | fix width | Don't reload when width changes
|
||||
## 4 | fix height | Don't reload when height changes
|
||||
## 5 | fix both | Don't ever reload
|
||||
## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
|
||||
## 7 | image | Display the file directly as an image
|
||||
|
||||
## Script arguments
|
||||
FILE_PATH="${1}" # Full path of the highlighted file
|
||||
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
|
||||
## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
|
||||
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
|
||||
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
|
||||
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
|
||||
|
||||
FILE_EXTENSION="${FILE_PATH##*.}"
|
||||
FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
## Settings
|
||||
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
|
||||
HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
|
||||
HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
|
||||
HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
|
||||
PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
|
||||
OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
|
||||
OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
|
||||
|
||||
handle_extension() {
|
||||
case "${FILE_EXTENSION_LOWER}" in
|
||||
## Archive
|
||||
a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
|
||||
rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
|
||||
atool --list -- "${FILE_PATH}" && exit 5
|
||||
bsdtar --list --file "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
rar)
|
||||
## Avoid password prompt by providing empty password
|
||||
unrar lt -p- -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
7z)
|
||||
## Avoid password prompt by providing empty password
|
||||
7z l -p -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## PDF
|
||||
pdf)
|
||||
## Preview as text conversion
|
||||
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
|
||||
fmt -w "${PV_WIDTH}" && exit 5
|
||||
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
|
||||
fmt -w "${PV_WIDTH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## BitTorrent
|
||||
torrent)
|
||||
transmission-show -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## OpenDocument
|
||||
odt|ods|odp|sxw)
|
||||
## Preview as text conversion
|
||||
odt2txt "${FILE_PATH}" && exit 5
|
||||
## Preview as markdown conversion
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## XLSX
|
||||
xlsx)
|
||||
## Preview as csv conversion
|
||||
## Uses: https://github.com/dilshod/xlsx2csv
|
||||
xlsx2csv -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## HTML
|
||||
htm|html|xhtml)
|
||||
## Preview as text conversion
|
||||
w3m -dump "${FILE_PATH}" && exit 5
|
||||
lynx -dump -- "${FILE_PATH}" && exit 5
|
||||
elinks -dump "${FILE_PATH}" && exit 5
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
;;
|
||||
|
||||
## JSON
|
||||
json)
|
||||
jq --color-output . "${FILE_PATH}" && exit 5
|
||||
python -m json.tool -- "${FILE_PATH}" && exit 5
|
||||
;;
|
||||
|
||||
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
|
||||
## by file(1).
|
||||
dff|dsf|wv|wvc)
|
||||
mediainfo "${FILE_PATH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
;; # Continue with next handler on failure
|
||||
esac
|
||||
}
|
||||
|
||||
handle_image() {
|
||||
## Size of the preview if there are multiple options or it has to be
|
||||
## rendered from vector graphics. If the conversion program allows
|
||||
## specifying only one dimension while keeping the aspect ratio, the width
|
||||
## will be used.
|
||||
local DEFAULT_SIZE="1920x1080"
|
||||
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
# SVG
|
||||
image/svg+xml|image/svg)
|
||||
convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
|
||||
exit 1;;
|
||||
|
||||
## DjVu
|
||||
# image/vnd.djvu)
|
||||
# ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
|
||||
# - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
|
||||
# && exit 6 || exit 1;;
|
||||
|
||||
## Image
|
||||
image/*)
|
||||
local orientation
|
||||
orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
|
||||
## If orientation data is present and the image actually
|
||||
## needs rotating ("1" means no rotation)...
|
||||
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
|
||||
## ...auto-rotate the image according to the EXIF data.
|
||||
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
|
||||
fi
|
||||
|
||||
## `w3mimgdisplay` will be called for all images (unless overriden
|
||||
## as above), but might fail for unsupported types.
|
||||
exit 7;;
|
||||
|
||||
# Video
|
||||
video/*)
|
||||
# Thumbnail
|
||||
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
|
||||
exit 1;;
|
||||
|
||||
# PDF
|
||||
application/pdf)
|
||||
pdftoppm -f 1 -l 1 \
|
||||
-scale-to-x "${DEFAULT_SIZE%x*}" \
|
||||
-scale-to-y -1 \
|
||||
-singlefile \
|
||||
-jpeg -tiffcompression jpeg \
|
||||
-- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
|
||||
&& exit 6 || exit 1;;
|
||||
|
||||
|
||||
# ePub, MOBI, FB2 (using Calibre)
|
||||
application/epub+zip|application/x-mobipocket-ebook|\
|
||||
application/x-fictionbook+xml)
|
||||
# ePub (using https://github.com/marianosimone/epub-thumbnailer)
|
||||
epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
|
||||
"${DEFAULT_SIZE%x*}" && exit 6
|
||||
ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
|
||||
>/dev/null && exit 6
|
||||
exit 1;;
|
||||
|
||||
## Font
|
||||
application/font*|application/*opentype)
|
||||
preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
|
||||
if fontimage -o "${preview_png}" \
|
||||
--pixelsize "120" \
|
||||
--fontname \
|
||||
--pixelsize "80" \
|
||||
--text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \
|
||||
--text " abcdefghijklmnopqrstuvwxyz " \
|
||||
--text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \
|
||||
--text " The quick brown fox jumps over the lazy dog. " \
|
||||
"${FILE_PATH}";
|
||||
then
|
||||
convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
|
||||
&& rm "${preview_png}" \
|
||||
&& exit 6
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
## Preview archives using the first image inside.
|
||||
## (Very useful for comic book collections for example.)
|
||||
# application/zip|application/x-rar|application/x-7z-compressed|\
|
||||
# application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
|
||||
# local fn=""; local fe=""
|
||||
# local zip=""; local rar=""; local tar=""; local bsd=""
|
||||
# case "${mimetype}" in
|
||||
# application/zip) zip=1 ;;
|
||||
# application/x-rar) rar=1 ;;
|
||||
# application/x-7z-compressed) ;;
|
||||
# *) tar=1 ;;
|
||||
# esac
|
||||
# { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
|
||||
# { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
|
||||
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
|
||||
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
|
||||
#
|
||||
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
|
||||
# [ print(l, end='') for l in sys.stdin if \
|
||||
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
|
||||
# sort -V | head -n 1)
|
||||
# [ "$fn" = "" ] && return
|
||||
# [ "$bsd" ] && fn=$(printf '%b' "$fn")
|
||||
#
|
||||
# [ "$tar" ] && tar --extract --to-stdout \
|
||||
# --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
|
||||
# [ "$bsd" ] && bsdtar --extract --to-stdout \
|
||||
# --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||
# [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
|
||||
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
|
||||
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||
# [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||
# ;;
|
||||
esac
|
||||
|
||||
# openscad_image() {
|
||||
# TMPPNG="$(mktemp -t XXXXXX.png)"
|
||||
# openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
|
||||
# --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
|
||||
# -o "${TMPPNG}" "${1}"
|
||||
# mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
|
||||
# }
|
||||
|
||||
case "${FILE_EXTENSION_LOWER}" in
|
||||
## 3D models
|
||||
## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
|
||||
## is hardcoded as jpeg. So we make a tempfile.png and just
|
||||
## move/rename it to jpg. This works because image libraries are
|
||||
## smart enough to handle it.
|
||||
csg|scad)
|
||||
openscad_image "${FILE_PATH}" && exit 6
|
||||
;;
|
||||
3mf|amf|dxf|off|stl)
|
||||
openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
handle_mime() {
|
||||
local mimetype="${1}"
|
||||
case "${mimetype}" in
|
||||
## RTF and DOC
|
||||
text/rtf|*msword)
|
||||
## Preview as text conversion
|
||||
## note: catdoc does not always work for .doc files
|
||||
## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||
catdoc -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## DOCX, ePub, FB2 (using markdown)
|
||||
## You might want to remove "|epub" and/or "|fb2" below if you have
|
||||
## uncommented other methods to preview those formats
|
||||
*wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
|
||||
## Preview as markdown conversion
|
||||
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## XLS
|
||||
*ms-excel)
|
||||
## Preview as csv conversion
|
||||
## xls2csv comes with catdoc:
|
||||
## http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||
xls2csv -- "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Text
|
||||
text/* | */xml)
|
||||
## Syntax highlight
|
||||
if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
|
||||
exit 2
|
||||
fi
|
||||
if [[ "$( tput colors )" -ge 256 ]]; then
|
||||
local pygmentize_format='terminal256'
|
||||
local highlight_format='xterm256'
|
||||
else
|
||||
local pygmentize_format='terminal'
|
||||
local highlight_format='ansi'
|
||||
fi
|
||||
env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
|
||||
--out-format="${highlight_format}" \
|
||||
--force -- "${FILE_PATH}" && exit 5
|
||||
env COLORTERM=8bit bat --color=always --style="plain" \
|
||||
-- "${FILE_PATH}" && exit 5
|
||||
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
|
||||
-- "${FILE_PATH}" && exit 5
|
||||
exit 2;;
|
||||
|
||||
## DjVu
|
||||
image/vnd.djvu)
|
||||
## Preview as text conversion (requires djvulibre)
|
||||
djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Image
|
||||
image/*)
|
||||
## Preview as text conversion
|
||||
# img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
|
||||
## Video and audio
|
||||
video/* | audio/*)
|
||||
mediainfo "${FILE_PATH}" && exit 5
|
||||
exiftool "${FILE_PATH}" && exit 5
|
||||
exit 1;;
|
||||
esac
|
||||
}
|
||||
|
||||
handle_fallback() {
|
||||
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
|
||||
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
|
||||
handle_image "${MIMETYPE}"
|
||||
fi
|
||||
handle_extension
|
||||
handle_mime "${MIMETYPE}"
|
||||
handle_fallback
|
||||
|
||||
exit 1
|
14
rofi-cafmenu/config.json
Normal file
14
rofi-cafmenu/config.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"ignored-meals": [
|
||||
"BREAKFAST"
|
||||
],
|
||||
"ignored-stations": [
|
||||
"Deli",
|
||||
"Mto Pasta",
|
||||
"Omeletes",
|
||||
"Pizza",
|
||||
"Salad",
|
||||
"Soup",
|
||||
"Kids Camps"
|
||||
]
|
||||
}
|
182
rofi/arthuredit.rasi
Normal file
182
rofi/arthuredit.rasi
Normal file
|
@ -0,0 +1,182 @@
|
|||
/**
|
||||
* ROFI Color theme
|
||||
* User: Qball
|
||||
* Copyright: Dave Davenport
|
||||
* Edited by Michael Bradley
|
||||
*/
|
||||
|
||||
* {
|
||||
foreground: #ffeedd;
|
||||
backlight: #ccffeedd;
|
||||
background-color: transparent;
|
||||
dark: #1c1c1c;
|
||||
// Black
|
||||
black: #3d352a;
|
||||
lightblack: #554444;
|
||||
tlightblack: #554444cc;
|
||||
//
|
||||
// Red
|
||||
red: #cd5c5c;
|
||||
lightred: #cc5533;
|
||||
//
|
||||
// Green
|
||||
green: #86af80;
|
||||
lightgreen: #88cc22;
|
||||
//
|
||||
// Yellow
|
||||
yellow: #e8ae5b;
|
||||
lightyellow: #ffa75d;
|
||||
//
|
||||
// Blue
|
||||
blue: #6495ed;
|
||||
lightblue: #87ceeb;
|
||||
//
|
||||
// Magenta
|
||||
magenta: #deb887;
|
||||
lightmagenta: #996600;
|
||||
//
|
||||
// Cyan
|
||||
cyan: #b0c4de;
|
||||
tcyan: #ccb0c4de;
|
||||
lightcyan: #b0c4de;
|
||||
//
|
||||
// White
|
||||
white: #bbaa99;
|
||||
lightwhite: #ddccbb;
|
||||
//
|
||||
// Bold, Italic, Underline
|
||||
highlight: underline bold #ffffff;
|
||||
|
||||
transparent: rgba(0,0,0,0);
|
||||
font: "JetBrains Mono 10";
|
||||
}
|
||||
window {
|
||||
location: center;
|
||||
anchor: center;
|
||||
transparency: "screenshot";
|
||||
padding: 10px;
|
||||
border: 0px;
|
||||
border-radius: 10px;
|
||||
color: @magenta;
|
||||
background-color: @transparent;
|
||||
spacing: 0;
|
||||
children: [mainbox];
|
||||
orientation: horizontal;
|
||||
}
|
||||
mainbox {
|
||||
spacing: 0;
|
||||
children: [ inputbar, message, listview ];
|
||||
}
|
||||
message {
|
||||
border-color: @foreground;
|
||||
border: 0px 2px 2px 2px;
|
||||
// border-radius: 10px;
|
||||
padding: 5;
|
||||
background-color: @tcyan;
|
||||
}
|
||||
message {
|
||||
font: "JetBrains Mono 8";
|
||||
color: @black;
|
||||
}
|
||||
inputbar {
|
||||
color: @lightgreen;
|
||||
padding: 11px;
|
||||
background-color: @tlightblack;
|
||||
border: 2px 2px 2px 2px;
|
||||
border-radius: 15px 15px 0px 0px;
|
||||
border-color: @foreground;
|
||||
font: "JetBrains Mono 18";
|
||||
}
|
||||
entry,prompt,case-indicator {
|
||||
text-font: inherit;
|
||||
text-color:inherit;
|
||||
}
|
||||
prompt {
|
||||
margin: 0px 0.3em 0em 0em ;
|
||||
}
|
||||
listview {
|
||||
padding: 8px;
|
||||
border-radius: 0px 0px 15px 15px;
|
||||
border-color: @foreground;
|
||||
border: 0px 2px 2px 2px;
|
||||
background-color: #1c1c1ccc;
|
||||
dynamic: false;
|
||||
lines: 10;
|
||||
}
|
||||
element {
|
||||
padding: 3px;
|
||||
vertical-align: 0.5;
|
||||
// border: 2px;
|
||||
border-radius: 4px;
|
||||
background-color: transparent;
|
||||
color: @foreground;
|
||||
font:inherit;
|
||||
}
|
||||
element-text {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: @blue;
|
||||
}
|
||||
element normal active {
|
||||
foreground: @lightblue;
|
||||
}
|
||||
element normal urgent {
|
||||
foreground: @lightred;
|
||||
}
|
||||
element alternate normal {
|
||||
}
|
||||
element alternate active {
|
||||
foreground: @lightblue;
|
||||
}
|
||||
element alternate urgent {
|
||||
foreground: @lightred;
|
||||
}
|
||||
element selected active {
|
||||
background-color: @lightblue;
|
||||
foreground: @dark;
|
||||
}
|
||||
element selected urgent {
|
||||
background-color: @lightred;
|
||||
foreground: @dark;
|
||||
}
|
||||
element normal normal {
|
||||
|
||||
}
|
||||
vertb {
|
||||
expand: false;
|
||||
children: [ dummy0, mode-switcher, dummy1 ];
|
||||
}
|
||||
dummy0, dummy1 {
|
||||
expand: true;
|
||||
}
|
||||
mode-switcher {
|
||||
expand: false;
|
||||
orientation: vertical;
|
||||
spacing: 0px;
|
||||
border: 0px 0px 0px 0px;
|
||||
}
|
||||
button {
|
||||
font: "FontAwesome 22";
|
||||
padding: 6px;
|
||||
border: 2px 0px 2px 2px;
|
||||
border-radius: 4px 0px 0px 4px;
|
||||
background-color: @tlightblack;
|
||||
border-color: @foreground;
|
||||
color: @foreground;
|
||||
horizontal-align: 0.5;
|
||||
}
|
||||
button selected normal {
|
||||
color: @dark;
|
||||
border: 2px 0px 2px 2px;
|
||||
background-color: @backlight;
|
||||
border-color: @foreground;
|
||||
}
|
||||
error-message {
|
||||
expand: true;
|
||||
background-color: red;
|
||||
border-color: darkred;
|
||||
border: 2px;
|
||||
padding: 1em;
|
||||
}
|
7
rofi/config.rasi
Executable file
7
rofi/config.rasi
Executable file
|
@ -0,0 +1,7 @@
|
|||
@theme "arthuredit"
|
||||
configuration {
|
||||
modi: "drun,calc,emoji:/usr/bin/rofimoji -a copy -f emojis math,audio:/home/mbradley/dev/rofi-audio/rofi-audio.py";
|
||||
combi-modi: "drun,filebrowser,emoji";
|
||||
icon-theme: "Papirus";
|
||||
show-icons: true;
|
||||
}
|
2
screenlayout/monitor.sh
Executable file
2
screenlayout/monitor.sh
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
xrandr --output DisplayPort-0 --mode 1920x1080 --pos 1920x1404 --rotate normal --rate 165 --output DisplayPort-1 --mode 1920x1080 --pos 0x1404 --rotate normal --rate 165 --primary --output HDMI-A-0 --pos 0x0 --rotate normal --rate 60 --scale 1.3x1.3 --panning 2496x1404
|
2
screenlayout/monitor.sh.normal
Executable file
2
screenlayout/monitor.sh.normal
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
xrandr --output DisplayPort-0 --mode 1920x1080 --pos 1920x0 --rotate normal --rate 165 --output DisplayPort-1 --mode 1920x1080 --pos 0x0 --rotate normal --rate 165 --primary
|
37
vim/viminfo
Normal file
37
vim/viminfo
Normal file
|
@ -0,0 +1,37 @@
|
|||
# This viminfo file was generated by Vim 9.0.
|
||||
# You may edit it if you're careful!
|
||||
|
||||
# Viminfo version
|
||||
|1,4
|
||||
|
||||
# Value of 'encoding' when this file was written
|
||||
*encoding=utf-8
|
||||
|
||||
|
||||
# hlsearch on (H) or off (h):
|
||||
~h
|
||||
# Command Line History (newest to oldest):
|
||||
|
||||
# Search String History (newest to oldest):
|
||||
|
||||
# Expression History (newest to oldest):
|
||||
|
||||
# Input Line History (newest to oldest):
|
||||
|
||||
# Debug Line History (newest to oldest):
|
||||
|
||||
# Registers:
|
||||
|
||||
# File marks:
|
||||
'0 1 0 ~/school/3/COMP3000/t1/csimpleshell.c
|
||||
|4,48,1,0,1674084872,"~/school/3/COMP3000/t1/csimpleshell.c"
|
||||
|
||||
# Jumplist (newest first):
|
||||
-' 1 0 ~/school/3/COMP3000/t1/csimpleshell.c
|
||||
|4,39,1,0,1674084872,"~/school/3/COMP3000/t1/csimpleshell.c"
|
||||
|
||||
# History of marks within files (newest to oldest):
|
||||
|
||||
> ~/school/3/COMP3000/t1/csimpleshell.c
|
||||
* 1674084863 0
|
||||
" 1 0
|
17
vim/vimrc
Normal file
17
vim/vimrc
Normal file
|
@ -0,0 +1,17 @@
|
|||
set runtimepath^=$XDG_CONFIG_HOME/vim
|
||||
set runtimepath+=$XDG_DATA_HOME/vim
|
||||
set runtimepath+=$XDG_CONFIG_HOME/vim/after
|
||||
|
||||
set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim
|
||||
set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after
|
||||
|
||||
let g:netrw_home = $XDG_DATA_HOME."/vim"
|
||||
call mkdir($XDG_DATA_HOME."/vim/spell", 'p')
|
||||
|
||||
set backupdir=$XDG_STATE_HOME/vim/backup | call mkdir(&backupdir, 'p')
|
||||
set directory=$XDG_STATE_HOME/vim/swap | call mkdir(&directory, 'p')
|
||||
set undodir=$XDG_STATE_HOME/vim/undo | call mkdir(&undodir, 'p')
|
||||
set viewdir=$XDG_STATE_HOME/vim/view | call mkdir(&viewdir, 'p')
|
||||
|
||||
if !has('nvim') | set viminfofile=$XDG_STATE_HOME/vim/viminfo | endif
|
||||
|
1651
zsh/.p10k-tty.zsh
Executable file
1651
zsh/.p10k-tty.zsh
Executable file
File diff suppressed because it is too large
Load diff
1652
zsh/.p10k.zsh
Executable file
1652
zsh/.p10k.zsh
Executable file
File diff suppressed because it is too large
Load diff
1876
zsh/.zcompdump
Normal file
1876
zsh/.zcompdump
Normal file
File diff suppressed because it is too large
Load diff
1863
zsh/.zcompdump-chonk-5.9
Normal file
1863
zsh/.zcompdump-chonk-5.9
Normal file
File diff suppressed because it is too large
Load diff
BIN
zsh/.zcompdump-chonk-5.9.zwc
Normal file
BIN
zsh/.zcompdump-chonk-5.9.zwc
Normal file
Binary file not shown.
136
zsh/.zshrc
Executable file
136
zsh/.zshrc
Executable file
|
@ -0,0 +1,136 @@
|
|||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
|
||||
#export HISTFILE="$XDG_STATE_HOME/bash/history"
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
export ELINKS_CONFDIR="$XDG_CONFIG_HOME/elinks"
|
||||
export GHCUP_USE_XDG_DIRS=true
|
||||
export LESSHISTFILE="$XDG_STATE_HOME/less/history"
|
||||
export RECOLL_CONFDIR="$XDG_CONFIG_HOME/recoll"
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
export HISTFILE="$XDG_STATE_HOME/zsh/history"
|
||||
export ZSH="$XDG_DATA_HOME/oh-my-zsh"
|
||||
#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority"
|
||||
export RANDFILE="$XDG_CACHE_HOME/.rnd"
|
||||
export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG_CONFIG_HOME/nvim/init.vim" | so $MYVIMRC'
|
||||
alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts"
|
||||
export W3M_DIR="$XDG_DATA_HOME/w3m"
|
||||
export NUGET_PACKAGES="$XDG_CACHE_HOME/NuGetPackages"
|
||||
|
||||
export PATH="$PATH:/home/mbradley/.local/share/JetBrains/Toolbox/scripts:/home/mbradley/scripts"
|
||||
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
# confirmations, etc.) must go above this block; everything else may go below.
|
||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
fi
|
||||
|
||||
ZSH_THEME="robbyrussell"
|
||||
HYPHEN_INSENSITIVE="true"
|
||||
ENABLE_CORRECTION="false"
|
||||
COMPLETION_WAITING_DOTS="true"
|
||||
plugins=(git python)
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
|
||||
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
if [[ "$TERM" == "linux" ]] ; then
|
||||
p10k="$ZDOTDIR/.p10k-tty.zsh"
|
||||
else
|
||||
p10k="$ZDOTDIR/.p10k.zsh"
|
||||
fi
|
||||
[[ ! -f "$p10k" ]] || source "$p10k"
|
||||
|
||||
MATRIX="neo-matrix -a -D -f 60 -s -m $(date +%y/%m/%d)"
|
||||
FANCYCLEAR="clear && echo && fastfetch && echo"
|
||||
|
||||
alias clera="clear"
|
||||
alias cealr="clear"
|
||||
alias cearl="clear"
|
||||
alias clare="clear"
|
||||
alias celar="clear"
|
||||
alias clrae="clear"
|
||||
alias cclear="clear"
|
||||
alias caerl="clear"
|
||||
alias caelr="clear"
|
||||
alias cleear="clear"
|
||||
alias dlear="clear"
|
||||
alias cleat="clear"
|
||||
alias clewar="clear"
|
||||
alias c=$FANCYCLEAR
|
||||
alias m=$MATRIX
|
||||
alias f="fastfetch"
|
||||
alias q="exit"
|
||||
alias e="exit"
|
||||
alias cm="$FANCYCLEAR && $MATRIX"
|
||||
alias ls="lsd"
|
||||
alias grep="rg"
|
||||
alias fdisk="sudo fdisk"
|
||||
alias gdisk="sudo gdisk"
|
||||
alias mount="sudo mount"
|
||||
alias umount="sudo umount"
|
||||
|
||||
alias wifi="nmtui"
|
||||
alias pacman="sudo pacman"
|
||||
alias quit="exit"
|
||||
alias please="sudo"
|
||||
alias pyhton="python"
|
||||
alias nordpvn="nordvpn"
|
||||
alias 1p='eval $(op signin)'
|
||||
alias reset="source .zshrc"
|
||||
alias audio="ncpamixer"
|
||||
alias showpic="kitty +kitten icat"
|
||||
#alias python="ipython"
|
||||
alias cleanbranches='git branch -l | rg -v "(^\*|master)" | xargs git branch -d'
|
||||
|
||||
LAST_REPO=""
|
||||
cd() {
|
||||
builtin cd "$@"
|
||||
git rev-parse 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
if [ "$LAST_REPO" != $(basename $(git rev-parse --show-toplevel)) ]; then
|
||||
onefetch
|
||||
LAST_REPO=$(basename $(git rev-parse --show-toplevel))
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
alias cat='bat --paging=never'
|
||||
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
||||
export MANROFFOPT="-c"
|
||||
help() {
|
||||
"$@" --help 2>&1 | bat --plain --language=help
|
||||
}
|
||||
|
||||
alias n="nvim"
|
||||
#alias vi="lvim"
|
||||
#alias vim="lvim"
|
||||
if [[ "$TERM" == "linux" ]] ; then
|
||||
export EDITOR="vim"
|
||||
else
|
||||
export EDITOR="lvim"
|
||||
fi
|
||||
alias v="$EDITOR"
|
||||
alias sv="sudo vim"
|
||||
#alias sv="sudoedit"
|
||||
export VISUAL=$EDITOR
|
||||
|
||||
export PATH="$PATH:/home/mbradley/.local/bin"
|
||||
#export QT_QPA_PLATFORMTHEME="qt5ct"
|
||||
|
||||
[ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh"
|
||||
|
||||
#c
|
||||
|
||||
#autoload -Uz compinit
|
||||
#compinit
|
||||
|
||||
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||||
|
||||
source /usr/share/zsh/plugins/fzf-tab-git/fzf-tab.zsh
|
||||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
|
BIN
zsh/.zshrc.zwc
Normal file
BIN
zsh/.zshrc.zwc
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue