Compare commits

...

39 Commits
null ... master

Author SHA1 Message Date
kageru 5cd96738ad
migrate nvim config to .config/nvim 2024-01-28 11:35:51 +01:00
kageru 461f3d2469
update configs 2024-01-28 11:33:08 +01:00
kageru 67c020d830
remove deprecated option from alacritty config 2023-04-13 20:41:52 +02:00
kageru 5a418d20f4
add sway autostart 2022-01-12 18:14:11 +01:00
kageru 2f4a77baad
All the changes 2021-12-11 13:17:26 +01:00
kageru 06994a18fe
All the changes 2021-12-11 13:17:25 +01:00
kageru 8c0decfa90 Update .vimrc 2021-12-10 11:06:26 +01:00
kageru 1612490e2c
Add sway/wayland stuff 2021-09-07 09:13:54 +02:00
kageru f333775ab5
vimrc changes 2021-08-04 13:38:28 +02:00
kageru 8e9840861f
more things 2021-04-15 18:13:10 +02:00
kageru 65754a8a4b
Add dunstrc
should really clean this up since it’s mostly defaults,
but who has the time for that?
2021-04-15 17:40:25 +02:00
kageru a84918de11
reverse polybar scrolling direction 2021-04-15 15:43:35 +02:00
kageru 7a0332562a
Update htoprc 2021-03-09 09:36:11 +01:00
kageru 2cc9925b59
remove ncmpcpp log 2020-12-04 13:33:55 +01:00
kageru 588614fc08
Add starship prompt 2020-11-30 11:40:55 +01:00
kageru fcb458e4fa
Lots of updates 2020-11-30 11:38:53 +01:00
kageru 795e567678
migrate from vundle to vim-plug 2020-06-28 22:44:03 +02:00
kageru d4906f8858
Add aliases for sd, skim, paste 2020-06-26 18:04:19 +02:00
kageru def95e8377
Move .i3 to .config/i3 2020-06-26 18:02:25 +02:00
kageru 0594a4768b
use st for ncmpcpp
my st has a bigger default font size than alacritty,
and I often have ncmpcpp fullscreened on the hi-dpi screen.
2020-06-26 18:01:09 +02:00
kageru 397442ef06
misc updates 2020-06-02 11:12:26 +02:00
kageru 96199369f6
Update polybar, xrandr for new monitor setup 2020-06-02 11:11:13 +02:00
kageru 5895f0d070
Update alacritty config 2020-06-02 11:10:01 +02:00
kageru 5df0be31a3
Remove BetterDiscord 2020-06-02 11:09:37 +02:00
kageru 9e12149fdf
Rename compton.conf to picon.conf 2020-06-02 11:08:45 +02:00
kageru 9e632f73b5
update i3 config
Switch browser to qutebrowser, terminal to alacritty (copy-paste
from/to st with some other applications was broken).
Also some color changes, borders, etc.
2020-06-02 11:06:26 +02:00
kageru 3b3a0d58a7
Remove most of the copy-pasted zshrc completion rules 2020-06-02 11:05:13 +02:00
kageru 9aaa69f9dc
Update .vimrc 2020-06-02 11:04:40 +02:00
kageru 2945c07c99
Add language servers to vimrc 2019-12-10 18:50:44 +01:00
kageru 4317feec05
vimrc changes 2019-08-03 07:46:42 +02:00
kageru ad10da983c
updated way too many things 2019-05-29 19:15:49 +02:00
kageru 2dfb25c303
add zathurarc 2019-05-27 18:57:36 +02:00
kageru 606375793f
Merge branch 'master' of ssh://git.kageru.moe:23453/kageru/dotfiles 2019-04-16 19:13:28 +02:00
kageru e699d7275b added htoprc 2019-04-16 14:14:36 +02:00
kageru 8c2f83d378
updated compton.conf with new transparency rules 2019-04-10 23:32:39 +02:00
kageru b4174758fd
updated compton.conf with new transparency rules 2019-04-08 16:07:37 +02:00
kageru 2184646ebc
updated i3 config for zsh colors and new compton behavior 2019-04-08 16:06:25 +02:00
kageru b6303bc8c2
zsh: add fzf for history, base16 for colors 2019-04-08 16:05:43 +02:00
kageru 4ed20b9358
Added vim plugins, changed color scheme, switched syntastic to on-demand scanning 2019-04-08 16:03:09 +02:00
69 changed files with 1646 additions and 16214 deletions

View File

@ -15,6 +15,8 @@ Xft.rgba: rgb
Xft.autohint: false
Xft.hintstyle: hintslight
Xft.lcdfilter: lcddefault
xft.family: Hack
Xft.size: 13
XTerm*background: #2b2b2b
XTerm*foreground: #e7e7e7

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "0.1.2",
"hasShownChangelog": true
}
}

View File

@ -1,141 +0,0 @@
//META{"name":"AccountDetailsPlus","displayName":"AccountDetailsPlus","website":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/AccountDetailsPlus","source":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/AccountDetailsPlus/AccountDetailsPlus.plugin.js"}*//
var AccountDetailsPlus = (() => {
const config = {"info":{"name":"AccountDetailsPlus","authors":[{"name":"Zerebos","discord_id":"249746236008169473","github_username":"rauenzi","twitter_username":"ZackRauen"}],"version":"0.1.2","description":"Lets you view popout, nickname and more from your account panel at the bottom. Support Server: bit.ly/ZeresServer","github":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/AccountDetailsPlus","github_raw":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/AccountDetailsPlus/AccountDetailsPlus.plugin.js"},"defaultConfig":[{"type":"category","id":"popout","name":"User Popout","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"avatar","name":"Avatar","note":"Opens your popout when clicking your avatar.","value":true},{"type":"switch","id":"username","name":"Username","note":"Opens your popout when clicking your username.","value":true}]},{"type":"category","id":"statusPicker","name":"Status Picker","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"avatar","name":"Avatar","note":"Opens your popout when right clicking your avatar.","value":true},{"type":"switch","id":"username","name":"Username","note":"Opens your popout when right clicking your username.","value":true}]},{"type":"category","id":"nickname","name":"Nickname","collapsible":true,"shown":false,"settings":[{"type":"dropdown","id":"showNickname","name":"Name Shown","value":true,"options":[{"label":"Username","value":false},{"label":"Nickname","value":true}]},{"type":"switch","id":"oppositeOnHover","name":"Opposite On Hover","note":"Shows the opposite on hover. e.g. if you are showing nickname, hovering will show your username.","value":true}]}],"changelog":[{"title":"Bugs Squashed","type":"fixed","items":["Fixed that one issue where it didn't work."]}],"main":"index.js"};
return !global.ZeresPluginLibrary ? class {
getName() {return config.info.name;}
getAuthor() {return config.info.authors.map(a => a.name).join(", ");}
getDescription() {return config.info.description;}
getVersion() {return config.info.version;}
load() {window.BdApi.alert("Library Missing",`The library plugin needed for ${config.info.name} is missing.<br /><br /> <a href="https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js" target="_blank">Click here to download the library!</a>`);}
start() {}
stop() {}
} : (([Plugin, Api]) => {
const plugin = (Plugin, Api) => {
const {PluginUtilities, DiscordModules, DiscordSelectors, ReactTools, DOMTools} = Api;
return class AccountDetailsPlus extends Plugin {
constructor() {
super();
this.usernameCSS = `.container-iksrDt .nameTag-26T3kW { cursor: pointer; }`;
this.popoutOpen = false;
}
async onStart() {
await new Promise(resolve => setTimeout(resolve, 1000));
this.FluxContainer = DiscordModules.UserPopout;
this.currentUser = DiscordModules.UserStore.getCurrentUser();
this.popoutWrapper = ReactTools.getReactProperty(document.querySelector(DiscordSelectors.AccountDetails.container + " .inner-1W0Bkn"), "return.return.return.return.return.return.return.stateNode");
this.originalRender = this.popoutWrapper.props.render;
this.activateShit();
}
onStop() {
this.popoutWrapper.props.render = this.originalRender;
PluginUtilities.removeStyle(this.getName() + "-css");
DOMTools.off(".AccountDetailsPlus");
this.saveSettings();
}
activateShit() {
document.querySelector(DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag).off("." + this.getName());
document.querySelector(DiscordSelectors.AccountDetails.container + " .inner-1W0Bkn").off("." + this.getName());
this.usernameCSS = DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag + "{ cursor: pointer; }";
PluginUtilities.removeStyle(this.getName() + "-css");
DOMTools.off(document, "mousemove." + this.getName());
document.querySelector(DiscordSelectors.AccountDetails.container.descend(".username")).textContent = this.currentUser.username;
if (this.settings.nickname.showNickname || this.settings.nickname.oppositeOnHover) {
DOMTools.on(document, "mousemove." + this.getName(), (e) => { this.adjustNickname(e); });
}
if (this.settings.popout.username) {
PluginUtilities.addStyle(this.getName() + "-css", this.usernameCSS);
document.querySelector(DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag).on("mousedown." + this.getName(), () => { this.popoutOpen = this.popoutWrapper.state.isOpen; });
document.querySelector(DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag).on("click." + this.getName(), (e) => { if (!this.popoutOpen) this.showUserPopout(e); });
}
if (this.settings.popout.avatar) {
document.querySelector(DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag).on("mousedown." + this.getName(), () => { this.popoutOpen = this.popoutWrapper.state.isOpen; });
document.querySelector(DiscordSelectors.AccountDetails.container + " .inner-1W0Bkn").on("click." + this.getName(), (e) => { if (!this.popoutOpen) this.showUserPopout(e); });
}
if (this.settings.statusPicker.username) {
document.querySelector(DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag).on("mousedown." + this.getName(), () => { this.popoutOpen = this.popoutWrapper.state.isOpen; });
document.querySelector(DiscordSelectors.AccountDetails.container + DiscordSelectors.AccountDetails.nameTag).on("contextmenu." + this.getName(), (e) => {
if (!this.popoutOpen) this.showStatusPicker(e);
});
}
if (this.settings.statusPicker.avatar) {
document.querySelector(DiscordSelectors.AccountDetails.container + " .inner-1W0Bkn").on("mousedown." + this.getName(), () => { this.popoutOpen = this.popoutWrapper.state.isOpen; });
document.querySelector(DiscordSelectors.AccountDetails.container + " .inner-1W0Bkn").on("contextmenu." + this.getName(), (e) => {
if (!this.popoutOpen) this.showStatusPicker(e);
});
}
}
adjustNickname(e) {
if (!e || !e.target || !(e.target instanceof Element)) return;
let accountDetails = document.querySelector(DiscordSelectors.AccountDetails.container);
if (!accountDetails) return;
let isHovering = accountDetails.contains(e.target);
let nameElement = accountDetails.querySelector(".username");
let nick = DiscordModules.GuildMemberStore.getNick(DiscordModules.SelectedGuildStore.getGuildId(), this.currentUser.id);
nick = nick ? nick : this.currentUser.username;
if (isHovering && this.settings.nickname.oppositeOnHover) {
if (this.settings.nickname.showNickname) nameElement.textContent = this.currentUser.username;
else if (!this.settings.nickname.showNickname) nameElement.textContent = nick;
}
else {
if (this.settings.nickname.showNickname) nameElement.textContent = nick;
else nameElement.textContent = this.currentUser.username;
}
}
setRender(renderer, options = {}) {
this.popoutWrapper.props.render = renderer;
Object.assign(this.popoutWrapper.props, options);
}
showStatusPicker(e) {
e.preventDefault();
e.stopPropagation();
this.setRender(this.originalRender, {position: "top-left", animationType: "spring"});
this.popoutWrapper.toggle(e);
}
showUserPopout(e) {
e.preventDefault();
e.stopPropagation();
var element = document.querySelector(DiscordSelectors.AccountDetails.container);
// e.target = e.currentTarget = e.toElement = e.delegateTarget = document.querySelector(DiscordSelectors.AccountDetails.container);
this.setRender((props) => {
let guild = DiscordModules.SelectedGuildStore.getGuildId();
let channel = DiscordModules.SelectedChannelStore.getChannelId();
return DiscordModules.React.createElement(this.FluxContainer, Object.assign({}, props, {
user: this.currentUser,
guildId: guild,
channelId: channel
}));
}, {position: "top-left", animationType: "default"});
this.popoutWrapper.toggle(Object.assign({}, e, {
target: element,
toElement: element,
currentTarget: element,
delegateTarget: element
}));
}
getSettingsPanel() {
const panel = this.buildSettingsPanel();
panel.addListener(this.updateSettings.bind(this));
return panel.getElement();
}
};
};
return plugin(Plugin, Api);
})(global.ZeresPluginLibrary.buildPlugin(config));
})();

View File

@ -1,3 +0,0 @@
{
"config": "{\"version\":1,\"direcotry\":\"none\"}"
}

View File

@ -1,150 +0,0 @@
//META{"name":"BetterCustomCSS"}*//
/*globals BdApi*/
'use strict';
var BetterCustomCSS = function () {};
BetterCustomCSS.prototype.getAuthor = function () {
return "kosshi";
};
BetterCustomCSS.prototype.getName = function () {
return "BetterCustomCSS";
};
BetterCustomCSS.prototype.getDescription = function () {
return "Lets you edit CSS live with your favorite text editor. Like Custom CSS but better.";
};
BetterCustomCSS.prototype.getVersion = function () {
return "0.1.0";
};
BetterCustomCSS.prototype.start = function () {
let settings = this.loadSettings();
let fs = require('fs');
if(this.accessSync(settings.direcotry)){
let elem = document.createElement("style");
elem.id = "bettercustomcss";
document.head.appendChild(elem);
this.watcher = fs.watch(settings.direcotry, {}, this.appendFile.bind(this));
this.appendFile();
}
};
BetterCustomCSS.prototype.stop = function () {
if( document.getElementById('bettercustomcss') ){
this.watcher.close();
document.head.removeChild( document.getElementById('bettercustomcss') );
}
};
BetterCustomCSS.prototype.appendFile = function () {
let settings = this.loadSettings();
let fs = require('fs');
fs.readFile(settings.direcotry, "utf8", (err, file)=>{
if(err){
BdApi.getCore().alert(
"BetterCustomCSS Error",
"Failed to read '"+settings.direcotry+"'. The plugin will be disabled. Go to the plugin settings and set the path correctly. This usually happens when the file is deleted or renamed."
);
this.stop();
return;
}
document.getElementById('bettercustomcss').innerHTML = file;
});
};
BetterCustomCSS.prototype.load = function () {};
BetterCustomCSS.prototype.unload = function () {};
BetterCustomCSS.prototype.onMessage = function () {};
BetterCustomCSS.prototype.onSwitch = function () {};
BetterCustomCSS.prototype.accessSync = function(dir){
var fs = require('fs');
try {
fs.accessSync(dir, fs.F_OK);
return true;
} catch (e) {
return false;
}
};
BetterCustomCSS.prototype.observer = function () {};
BetterCustomCSS.prototype.saveSettings = function (button) {
var settings = this.loadSettings();
var dir = document.getElementById('qs_directory').value;
var plugin = BdApi.getPlugin('BetterCustomCSS');
var err = document.getElementById('qs_err');
if( plugin.accessSync(dir) ){
settings.direcotry = dir;
bdPluginStorage.set(this.getName(), 'config', JSON.stringify(settings));
plugin.stop();
plugin.start();
err.innerHTML = "";
button.innerHTML = "Saved and applied!";
} else {
err.innerHTML = "Error: Invalid directory!";
return;
}
setTimeout(()=>{button.innerHTML = "Save and apply";},1000);
};
BetterCustomCSS.prototype.settingsVersion = 1;
BetterCustomCSS.prototype.defaultSettings = function () {
return {
version: this.settingsVersion,
direcotry: "none"
};
};
BetterCustomCSS.prototype.resetSettings = function (button) {
var settings = this.defaultSettings();
bdPluginStorage.set(this.getName(), 'config', JSON.stringify(settings));
this.stop();
this.start();
button.innerHTML = "Settings resetted!";
setTimeout(function(){button.innerHTML = "Reset settings";},1000);
};
BetterCustomCSS.prototype.loadSettings = function() {
// Loads settings from localstorage
var settings = (bdPluginStorage.get(this.getName(), 'config')) ? JSON.parse(bdPluginStorage.get(this.getName(), 'config')) : {version:"0"};
if(settings.version != this.settingsVersion){
console.log('['+this.getName()+'] Settings were outdated/invalid/nonexistent. Using default settings.');
settings = this.defaultSettings();
bdPluginStorage.set(this.getName(), 'config', JSON.stringify(settings));
}
return settings;
};
BetterCustomCSS.prototype.import = function (string) {
bdPluginStorage.set(this.getName(), 'config', string);
this.stop();
this.start();
}
BetterCustomCSS.prototype.getSettingsPanel = function () {
var settings = this.loadSettings();
var html = "<h3>Settings Panel</h3><br>";
html += "BetterCustomCSS css file directory<br>";
html += "<input id='qs_directory' type='text' value=" + (settings.direcotry) + " style='width:100% !important;'> <br><br>";
html +="<br><button onclick=BdApi.getPlugin('"+this.getName()+"').saveSettings(this)>Save and apply</button>";
html +="<button onclick=BdApi.getPlugin('"+this.getName()+"').resetSettings(this)>Reset settings</button> <br><br>";
html += "<p style='color:red' id='qs_err'></p>";
html += "How to use:";
html += "<br>1) Create a CSS file that you want to use.";
html += "<br>2) Set the directory setting to the file. (eg C:/Users/youruser/Desktop/theme.css)";
html += "<br>3) The file will be now loaded to the DOM. The plugin attempts to reload the file when it is edited.";
html += "<br>4) You can now open the file in your favorite text editor, edit it, and see the results instantly after saving the file.";
return html;
};

View File

@ -1,57 +0,0 @@
{
"currentVersionInfo": {
"version": "2.3.1",
"hasShownChangelog": true
},
"settings": {
"toolbar": {
"bold": true,
"italic": true,
"underline": true,
"strikethrough": true,
"code": true,
"codeblock": true,
"superscript": true,
"smallcaps": true,
"fullwidth": true,
"upsidedown": true,
"varied": true,
"leet": false,
"thicc": false
},
"formats": {
"superscript": true,
"smallcaps": true,
"fullwidth": true,
"upsidedown": true,
"varied": true,
"leet": false,
"thicc": false
},
"wrappers": {
"superscript": "^^",
"smallcaps": "%%",
"fullwidth": "##",
"upsidedown": "&&",
"varied": "||",
"leet": "++",
"thicc": "$$"
},
"formatting": {
"fullWidthMap": true,
"reorderUpsidedown": true,
"fullwidth": true
},
"plugin": {
"hoverOpen": true,
"chainFormats": true,
"closeOnSend": true
},
"style": {
"icons": true,
"rightSide": true,
"toolbarOpacity": 1,
"fontSize": 85
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "0.7.6",
"hasShownChangelog": true
}
}

View File

@ -1,267 +0,0 @@
//META{"name":"BetterRoleColors","displayName":"BetterRoleColors","website":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/BetterRoleColors","source":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/BetterRoleColors/BetterRoleColors.plugin.js"}*//
var BetterRoleColors = (() => {
const config = {"info":{"name":"BetterRoleColors","authors":[{"name":"Zerebos","discord_id":"249746236008169473","github_username":"rauenzi","twitter_username":"ZackRauen"}],"version":"0.7.6","description":"Adds server-based role colors to typing, voice, popouts, modals and more! Support Server: bit.ly/ZeresServer","github":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/BetterRoleColors","github_raw":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/BetterRoleColors/BetterRoleColors.plugin.js"},"defaultConfig":[{"type":"category","id":"modules","name":"Module Settings","collapsible":true,"shown":true,"settings":[{"type":"switch","id":"typing","name":"Typing","note":"Toggles colorizing of typing notifications.","value":true},{"type":"switch","id":"voice","name":"Voice","note":"Toggles colorizing of voice users.","value":true},{"type":"switch","id":"mentions","name":"Mentions","note":"Toggles colorizing of user mentions in chat.","value":true},{"type":"switch","id":"botTags","name":"Bot Tags","note":"Toggles coloring the background of bot tags to match role.","value":true},{"type":"switch","id":"memberList","name":"Memberlist Headers","note":"Toggles coloring role names in the member list.","value":true}]},{"type":"category","id":"popouts","name":"Popout Options","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"username","name":"Username","note":"Toggles coloring on the username in popouts.","value":false},{"type":"switch","id":"discriminator","name":"Discriminator","note":"Toggles coloring on the discriminator in popouts.","value":false},{"type":"switch","id":"nickname","name":"Nickname","note":"Toggles coloring on the nickname in popouts.","value":true},{"type":"switch","id":"fallback","name":"Enable Fallback","note":"If nickname is on and username is off, enabling this will automatically color the username.","value":true}]},{"type":"category","id":"modals","name":"Modal Options","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"username","name":"Username","note":"Toggles coloring on the username in modals.","value":true},{"type":"switch","id":"discriminator","name":"Discriminator","note":"Toggles coloring on the discriminator in modals.","value":false}]},{"type":"category","id":"auditLog","name":"Audit Log Options","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"username","name":"Username","note":"Toggles coloring on the username in audit log.","value":true},{"type":"switch","id":"discriminator","name":"Discriminator","note":"Toggles coloring on the discriminator in audit log.","value":false}]},{"type":"category","id":"account","name":"Account Details Options","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"username","name":"Username","note":"Toggles coloring on the username in account details.","value":true},{"type":"switch","id":"discriminator","name":"Discriminator","note":"Toggles coloring on the discriminator in account details.","value":false}]},{"type":"category","id":"mentions","name":"Mention Options","collapsible":true,"shown":false,"settings":[{"type":"switch","id":"changeOnHover","name":"Hover Color","note":"Turning this on adjusts the color on hover to match role color, having it off defers to your theme.","value":true}]}],"changelog":[{"title":"What's New?","items":["Role headers in the memberlist now match the role color! (You can turn this off in settings)"]}],"main":"index.js"};
return !global.ZeresPluginLibrary ? class {
getName() {return config.info.name;}
getAuthor() {return config.info.authors.map(a => a.name).join(", ");}
getDescription() {return config.info.description;}
getVersion() {return config.info.version;}
load() {window.BdApi.alert("Library Missing",`The library plugin needed for ${config.info.name} is missing.<br /><br /> <a href="https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js" target="_blank">Click here to download the library!</a>`);}
start() {}
stop() {}
} : (([Plugin, Api]) => {
const plugin = (Plugin, Api) => {
const {DiscordSelectors, WebpackModules, DiscordModules, PluginUtilities, Patcher, ColorConverter, ReactTools} = Api;
const ReactDOM = DiscordModules.ReactDOM;
const GuildMemberStore = DiscordModules.GuildMemberStore;
const SelectedGuildStore = DiscordModules.SelectedGuildStore;
const UserStore = DiscordModules.UserStore;
const RelationshipStore = DiscordModules.RelationshipStore;
const PopoutWrapper = WebpackModules.getByProps("Positions", "Animations");
const VoiceUser = WebpackModules.find(m => typeof(m) === "function" && m.List);
const UserPopout = DiscordModules.UserPopout;
const UserModal = DiscordModules.UserProfileModal;
const AuditLogItem = WebpackModules.getByPrototypes("renderPermissionUpdate");
const TypingUsers = WebpackModules.findByDisplayName("FluxContainer(TypingUsers)");
return class BetterRoleColors extends Plugin {
constructor() {
super();
this.cancels = [];
}
onStart() {
this.patchVoiceUsers();
this.patchMentions();
this.patchAccountDetails();
this.patchUserPopouts();
this.patchUserModals();
this.patchAuditLog();
this.patchTypingUsers();
this.patchMemberList();
}
onStop() {
Patcher.unpatchAll();
for (const cancel of this.cancels) cancel();
}
getSettingsPanel() {
return this.buildSettingsPanel().getElement();
}
patchAccountDetails() {
const colorize = () => {
if (!this.settings.account.username && !this.settings.account.discriminator) return;
const account = document.querySelector(DiscordSelectors.AccountDetails.accountDetails);
if (!account) return;
const member = GuildMemberStore.getMember(SelectedGuildStore.getGuildId(), UserStore.getCurrentUser().id);
const color = member && member.colorString ? member.colorString : "";
if (this.settings.account.username) account.querySelector(".username").style.setProperty("color", color, "important");
if (this.settings.account.discriminator) {
account.querySelector(".discriminator").style.setProperty("color", color, "important");
account.querySelector(".discriminator").style.setProperty("opacity", "1");
}
};
PluginUtilities.addOnSwitchListener(colorize);
this.cancels.push(() => {
PluginUtilities.removeOnSwitchListener(colorize);
const account = document.querySelector(DiscordSelectors.AccountDetails.accountDetails);
account.querySelector(".username").style.setProperty("color", "");
account.querySelector(".discriminator").style.setProperty("color", "");
account.querySelector(".discriminator").style.setProperty("opacity", "");
});
colorize();
}
filterTypingUsers(typingUsers) {
if (!typingUsers) return [];
return Object.keys(typingUsers).filter((e) => {
return e != UserStore.getCurrentUser().id;
}).filter((e) => {
return !RelationshipStore.isBlocked(e);
}).map((e) => {
return UserStore.getUser(e);
}).filter(function(e) {
return e != null;
});
}
patchTypingUsers() {
const brc = this;
Patcher.after(TypingUsers.prototype, "componentDidUpdate", (thisObject) => {
if (!brc.settings.modules.typing) return;
setImmediate(() => {
const typingUsers = this.filterTypingUsers(Object.assign({}, thisObject.state.typingUsers));
document.querySelectorAll(DiscordSelectors.Typing.typing.descend("strong")).forEach((elem, index) => {
if (!typingUsers[index]) return;
const member = GuildMemberStore.getMember(SelectedGuildStore.getGuildId(), typingUsers[index].id);
if (!member) return;
elem.style.setProperty("color", member.colorString ? member.colorString : "");
});
});
});
}
patchVoiceUsers() {
const brc = this;
const voiceUserMount = function() {
if (!brc.settings.modules.voice) return;
if (!this || !this.props || !this.props.user) return;
const member = GuildMemberStore.getMember(SelectedGuildStore.getGuildId(), this.props.user.id);
if (!member || !member.colorString) return;
const elem = ReactDOM.findDOMNode(this);
elem.querySelector("[class*=\"name\"]").style.setProperty("color", member.colorString);
};
Patcher.after(VoiceUser.prototype, "componentDidMount", (thisObject) => {
const bound = voiceUserMount.bind(thisObject); bound();
});
}
patchMentions() {
const brc = this;
const mentionMount = function() {
if (!brc.settings.modules.mentions) return;
if (!this || !this.props || !this.props.children || !this.props.children.props || this.props.children.props.className != "mention") return;
const props = this.props.render().props;
if (!props || !props.user) return;
const member = GuildMemberStore.getMember(SelectedGuildStore.getGuildId(), props.user.id);
if (!member || !member.colorString) return;
const elem = ReactDOM.findDOMNode(this);
elem.style.setProperty("color", member.colorString, "important");
elem.style.setProperty("background", ColorConverter.rgbToAlpha(member.colorString,0.1), "important");
if (!brc.settings.mentions.changeOnHover) return;
elem.addEventListener("mouseenter", (e) =>{
e.target.style.setProperty("color", "#FFFFFF", "important");
e.target.style.setProperty("background", ColorConverter.rgbToAlpha(member.colorString,0.7), "important");
});
elem.addEventListener("mouseleave", (e) => {
e.target.style.setProperty("color", member.colorString, "important");
e.target.style.setProperty("background", ColorConverter.rgbToAlpha(member.colorString,0.1), "important");
});
};
Patcher.after(PopoutWrapper.prototype, "componentDidMount", (thisObject) => {
const bound = mentionMount.bind(thisObject); bound();
});
}
patchUserPopouts() {
const brc = this;
const popoutMount = function() {
if (!brc.settings.popouts.username && !brc.settings.popouts.discriminator && !brc.settings.popouts.nickname) return;
if (!this || !this.props || !this.props.user) return;
const member = GuildMemberStore.getMember(SelectedGuildStore.getGuildId(), this.props.user.id);
if (!member || !member.colorString) return;
const elem = ReactDOM.findDOMNode(this);
const hasNickname = Boolean(this.state.nickname);
if (brc.settings.popouts.username || (!hasNickname && brc.settings.popouts.fallback)) elem.querySelector(".username").style.setProperty("color", member.colorString, "important");
if (brc.settings.popouts.discriminator) elem.querySelector(".discriminator").style.setProperty("color", member.colorString, "important");
if (brc.settings.popouts.nickname && hasNickname) elem.querySelector(DiscordSelectors.UserPopout.headerName).style.setProperty("color", member.colorString, "important");
};
Patcher.after(UserPopout.prototype, "componentDidMount", (thisObject) => {
const bound = popoutMount.bind(thisObject); bound();
});
}
patchUserModals() {
const brc = this;
const modalMount = function() {
if (!brc.settings.modals.username && !brc.settings.modals.discriminator) return;
if (!this || !this.props || !this.props.user) return;
const member = GuildMemberStore.getMember(SelectedGuildStore.getGuildId(), this.props.user.id);
if (!member || !member.colorString) return;
const elem = ReactDOM.findDOMNode(this);
if (brc.settings.modals.username) elem.querySelector(".username").style.setProperty("color", member.colorString, "important");
if (brc.settings.modals.discriminator) elem.querySelector(".discriminator").style.setProperty("color", member.colorString, "important");
};
Patcher.after(UserModal.prototype, "componentDidMount", (thisObject) => {
const bound = modalMount.bind(thisObject); bound();
});
}
patchAuditLog() {
const brc = this;
const auditlogMount = function() {
if (!brc.settings.auditLog.username && !brc.settings.auditLog.discriminator) return;
if (!this || !this.props || !this.props.log || !this.props.log.user) return;
const elem = ReactDOM.findDOMNode(this);
const hooks = elem.querySelectorAll(DiscordSelectors.AuditLog.userHook);
const member = GuildMemberStore.getMember(this._reactInternalFiber.return.memoizedProps.guildId, this.props.log.user.id);
if (member && member.colorString) {
if (member.colorString && brc.settings.auditLog.username) hooks[0].children[0].style.color = member.colorString;
if (member.colorString && brc.settings.auditLog.discriminator) { hooks[0].querySelector(DiscordSelectors.AuditLog.discrim).style.color = member.colorString;hooks[0].querySelector(DiscordSelectors.AuditLog.discrim).style.opacity = 1;}
}
if (hooks.length < 2 || this.props.log.targetType != "USER") return;
const member2 = GuildMemberStore.getMember(this._reactInternalFiber.return.memoizedProps.guildId, this.props.log.target.id);
if (!member2 || !member2.colorString) return;
if (brc.settings.auditLog.username) hooks[1].children[0].style.color = member2.colorString;
if (brc.settings.auditLog.discriminator) { hooks[1].querySelector(DiscordSelectors.AuditLog.discrim).style.color = member2.colorString;hooks[1].querySelector(DiscordSelectors.AuditLog.discrim).style.opacity = 1;}
};
Patcher.after(AuditLogItem.prototype, "componentDidMount", (thisObject) => {
const bound = auditlogMount.bind(thisObject); bound();
});
}
getMemberGroup() {
return new Promise(resolve => {
const memberList = document.querySelector(DiscordSelectors.MemberList.membersWrap);
if (memberList) {resolve(ReactTools.getOwnerInstance(memberList, {include: ["ChannelMembers"]}).constructor);}
else {
const channel = WebpackModules.find(m => m.prototype && m.prototype.renderEmptyChannel);
const unpatch = Patcher.before(channel.prototype, "componentDidUpdate", (t) => {
const elem = DiscordModules.ReactDOM.findDOMNode(t);
if (!elem) return;
const memberList = elem.querySelector(DiscordSelectors.MemberList.membersWrap);
if (!memberList) return;
unpatch();
resolve(ReactTools.getOwnerInstance(memberList, {include: ["ChannelMembers"]}).constructor);
});
}
});
}
forceUpdateMemberList() {
const memberList = document.querySelector(DiscordSelectors.MemberList.membersWrap);
if (memberList) ReactTools.getOwnerInstance(memberList, {include: ["ChannelMembers"]}).forceUpdate();
}
async patchMemberList() {
const MemberList = await this.getMemberGroup();
Patcher.after(MemberList.prototype, "render", (memberList) => {
if (memberList.renderSection.__patched) return;
Patcher.after(memberList, "renderSection", (_, __, section) => {
if (!this.settings.modules.memberList) return;
const guild = DiscordModules.GuildStore.getGuild(memberList.props.channel.guild_id);
if (!guild) return;
const roleColor = guild.roles[section.props.id] ? guild.roles[section.props.id].colorString : "";
if (!roleColor) return;
const originalType = section.type;
section.type = function() {
const label = originalType(...arguments);
label.props.style = {color: roleColor};
return label;
};
return section;
});
memberList.renderSection.__patched = true;
});
this.forceUpdateMemberList();
}
};
};
return plugin(Plugin, Api);
})(global.ZeresPluginLibrary.buildPlugin(config));
})();

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "0.0.3",
"hasShownChangelog": true
}
}

View File

@ -1,47 +0,0 @@
//META{"name":"DoNotTrack","displayName":"DoNotTrack","website":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/DoNotTrack","source":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/DoNotTrack/DoNotTrack.plugin.js"}*//
var DoNotTrack = (() => {
const config = {"info":{"name":"DoNotTrack","authors":[{"name":"Zerebos","discord_id":"249746236008169473","github_username":"rauenzi","twitter_username":"ZackRauen"}],"version":"0.0.3","description":"Stops Discord from tracking everything you do like Sentry and Analytics. Support Server: bit.ly/ZeresServer","github":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/DoNotTrack","github_raw":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/DoNotTrack/DoNotTrack.plugin.js"},"changelog":[{"title":"What's New?","items":["Use only local lib loading."]}],"main":"index.js"};
return !global.ZeresPluginLibrary ? class {
getName() {return config.info.name;}
getAuthor() {return config.info.authors.map(a => a.name).join(", ");}
getDescription() {return config.info.description;}
getVersion() {return config.info.version;}
load() {window.BdApi.alert("Library Missing",`The library plugin needed for ${config.info.name} is missing.<br /><br /> <a href="https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js" target="_blank">Click here to download the library!</a>`);}
start() {}
stop() {}
} : (([Plugin, Api]) => {
const plugin = (Plugin, Api) => {
const {Patcher, WebpackModules} = Api;
return class DoNotTrack extends Plugin {
onStart() {
const Analytics = WebpackModules.getByProps("AnalyticEventConfigs");
Patcher.instead(Analytics.default, "track", () => {});
const Warning = WebpackModules.getByProps("consoleWarning");
Patcher.instead(Warning, "consoleWarning", () => {});
const MethodWrapper = WebpackModules.getByProps("wrapMethod");
Patcher.instead(MethodWrapper, "wrapMethod", () => {});
const Sentry = WebpackModules.getByProps("_originalConsoleMethods", "_wrappedBuiltIns");
Sentry.uninstall();
Patcher.instead(Sentry, "_breadcrumbEventHandler", () => () => {});
Patcher.instead(Sentry, "captureBreadcrumb", () => {});
Patcher.instead(Sentry, "_makeRequest", () => {});
Patcher.instead(Sentry, "_sendProcessedPayload", () => {});
Patcher.instead(Sentry, "_send", () => {});
Object.assign(window.console, Sentry._originalConsoleMethods);
}
onStop() {
Patcher.unpatchAll();
}
};
};
return plugin(Plugin, Api);
})(global.ZeresPluginLibrary.buildPlugin(config));
})();

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "1.0.8",
"hasShownChangelog": true
}
}

View File

@ -1,95 +0,0 @@
//META { "name": "HighlightSelf", "website": "https://inve1951.github.io/BetterDiscordStuff/" } *//
var HighlightSelf;
HighlightSelf = function () {
var MessageComponents, UserStore, cancel, css, getOwnerInstance, install;
class HighlightSelf {
getName() {
return "Highlight Self";
}
getDescription() {
return "Highlights your own username in message headers.";
}
getAuthor() {
return "square";
}
getVersion() {
return "1.1.0";
}
load() {
return window.SuperSecretSquareStuff != null ? window.SuperSecretSquareStuff : window.SuperSecretSquareStuff = new Promise(function (c, r) {
return require("request").get("https://raw.githubusercontent.com/Inve1951/BetterDiscordStuff/master/plugins/0circle.plugin.js", function (err, res, body) {
if (err || 200 !== (res != null ? res.statusCode : void 0)) {
return r(err != null ? err : res);
}
Object.defineProperties(window.SuperSecretSquareStuff, {
libLoaded: {
value: c
},
code: {
value: body
}
});
return (0, eval)(body);
});
});
}
async start() {
({ getOwnerInstance } = await SuperSecretSquareStuff);
if (!install()) {
this.onSwitch = install;
}
return BdApi.injectCSS("css_highlightSelf", css);
}
stop() {
if (cancel) {
cancel();
cancel = null;
}
return BdApi.clearCSS("css_highlightSelf");
}
};
MessageComponents = UserStore = cancel = getOwnerInstance = null;
install = function () {
var i, len, n, ref;
MessageComponents || (MessageComponents = BDV2.WebpackModules.find(function (m) {
return m.MessageUsername;
}));
UserStore || (UserStore = BDV2.WebpackModules.findByUniqueProperties(["getCurrentUser"]));
if (!(MessageComponents && UserStore)) {
return false;
}
delete this.onSwitch;
cancel = Utils.monkeyPatch(MessageComponents.MessageUsername.prototype, "render", {
after: function ({ returnValue, thisObject }) {
var props, ref;
({ props } = returnValue.props.children);
if (UserStore.getCurrentUser() === thisObject.props.message.author && !((ref = props.className) != null ? ref.endsWith(" highlight-self") : void 0)) {
return props.className = props.className ? props.className + " highlight-self" : "highlight-self";
}
}
});
try {
ref = document.querySelectorAll(".message-1PNnaP h2 > span");
for (i = 0, len = ref.length; i < len; i++) {
n = ref[i];
getOwnerInstance(n).forceUpdate();
}
} catch (error) {}
return true;
};
css = ".highlight-self .username-_4ZSMR {\n text-decoration: underline;\n}";
return HighlightSelf;
}.call(this);

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "0.1.3",
"hasShownChangelog": true
}
}

View File

@ -1,589 +0,0 @@
//META{"name":"PermissionsViewer","displayName":"PermissionsViewer","website":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/PermissionsViewer","source":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/PermissionsViewer/PermissionsViewer.plugin.js"}*//
var PermissionsViewer = (() => {
const config = {"info":{"name":"PermissionsViewer","authors":[{"name":"Zerebos","discord_id":"249746236008169473","github_username":"rauenzi","twitter_username":"ZackRauen"}],"version":"0.1.3","description":"Allows you to view a user's permissions. Thanks to Noodlebox for the idea! Support Server: bit.ly/ZeresServer","github":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/PermissionsViewer","github_raw":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/PermissionsViewer/PermissionsViewer.plugin.js"},"changelog":[{"title":"Bug Fixes","type":"fixes","items":["Permissions button showing in DMs","Owner pseudo-role having no permissions"]}],"defaultConfig":[{"type":"switch","id":"contextMenus","name":"Context Menus","note":"Toggles colorizing of typing notifications.","value":true},{"type":"switch","id":"popouts","name":"Popouts","note":"Toggles colorizing of typing notifications.","value":true}],"strings":{"es":{"contextMenuLabel":"Permisos","popoutLabel":"Permisos","modal":{"header":"Permisos de ${name}","rolesLabel":"Roles","permissionsLabel":"Permisos","owner":"@propietario"},"settings":{"popouts":{"name":"Mostrar en Popouts","note":"Mostrar los permisos de usuario en popouts como los roles."},"contextMenus":{"name":"Botón de menú contextual","note":"Añadir un botón para ver permisos en los menús contextuales."}}},"pt":{"contextMenuLabel":"Permissões","popoutLabel":"Permissões","modal":{"header":"Permissões de ${name}","rolesLabel":"Cargos","permissionsLabel":"Permissões","owner":"@dono"},"settings":{"popouts":{"name":"Mostrar em Popouts","note":"Mostrar as permissões em popouts como os cargos."},"contextMenus":{"name":"Botão do menu de contexto","note":"Adicionar um botão parar ver permissões ao menu de contexto."}}},"de":{"contextMenuLabel":"Berechtigungen","popoutLabel":"Berechtigungen","modal":{"header":"${name}s Berechtigungen","rolesLabel":"Rollen","permissionsLabel":"Berechtigungen","owner":"@eigentümer"},"settings":{"popouts":{"name":"In Popouts anzeigen","note":"Zeigt die Gesamtberechtigungen eines Benutzers in seinem Popup ähnlich den Rollen an."},"contextMenus":{"name":"Kontextmenü-Schaltfläche","note":"Fügt eine Schaltfläche hinzu, um die Berechtigungen mithilfe von Kontextmenüs anzuzeigen."}}},"en":{"contextMenuLabel":"Permissions","popoutLabel":"Permissions","modal":{"header":"${name}'s Permissions","rolesLabel":"Roles","permissionsLabel":"Permissions","owner":"@owner"},"settings":{"popouts":{"name":"Show In Popouts","note":"Shows a user's total permissions in their popout similar to roles."},"contextMenus":{"name":"Context Menu Button","note":"Adds a button to view the permissions modal to select context menus."}}}},"main":"index.js"};
return !global.ZeresPluginLibrary ? class {
getName() {return config.info.name;}
getAuthor() {return config.info.authors.map(a => a.name).join(", ");}
getDescription() {return config.info.description;}
getVersion() {return config.info.version;}
load() {window.BdApi.alert("Library Missing",`The library plugin needed for ${config.info.name} is missing.<br /><br /> <a href="https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js" target="_blank">Click here to download the library!</a>`);}
start() {}
stop() {}
} : (([Plugin, Api]) => {
const plugin = (Plugin, Api) => {
const {Patcher, DiscordModules, PluginUtilities, Toasts, DiscordClasses, DiscordSelectors, Utilities, DOMTools, ReactTools, ContextMenu, ColorConverter} = Api;
const GuildStore = DiscordModules.GuildStore;
const SelectedGuildStore = DiscordModules.SelectedGuildStore;
const MemberStore = DiscordModules.GuildMemberStore;
const UserStore = DiscordModules.UserStore;
const DiscordPerms = Object.assign({}, DiscordModules.DiscordConstants.Permissions);
if (DiscordPerms.SEND_TSS_MESSAGES) {
DiscordPerms.SEND_TTS_MESSAGES = DiscordPerms.SEND_TSS_MESSAGES;
delete DiscordPerms.SEND_TSS_MESSAGES;
}
if (DiscordPerms.MANAGE_GUILD) {
DiscordPerms.MANAGE_SERVER = DiscordPerms.MANAGE_GUILD;
delete DiscordPerms.MANAGE_GUILD;
}
return class PermissionsViewer extends Plugin {
constructor() {
super();
this.css = `.member-perms-header {
display: flex;
justify-content: space-between;
}
.member-perms {
display: flex;
flex-wrap: wrap;
margin-top: 2px;
max-height: 160px;
overflow-y: auto;
}
.member-perms .member-perm .perm-circle {
border-radius: 50%;
height: 12px;
margin-right: 4px;
width: 12px;
}
.member-perms .member-perm .name {
margin-right: 4px;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.perm-details-button {
cursor: pointer;
height: 12px;
}
.perm-details {
display: flex;
justify-content: flex-end;
}
.member-perm-details {
cursor: pointer;
}
.member-perm-details-button {
fill: #72767d;
height: 10px;
}
/* Modal */
@keyframes permissions-backdrop {
to { opacity: 0.85; }
}
@keyframes permissions-modal-wrapper {
to { transform: scale(1); opacity: 1; }
}
@keyframes permissions-backdrop-closing {
to { opacity: 0; }
}
@keyframes permissions-modal-wrapper-closing {
to { transform: scale(0.7); opacity: 0; }
}
#permissions-modal-wrapper .callout-backdrop {
animation: permissions-backdrop 250ms ease;
animation-fill-mode: forwards;
opacity: 0;
background-color: rgb(0, 0, 0);
transform: translateZ(0px);
}
#permissions-modal-wrapper.closing .callout-backdrop {
animation: permissions-backdrop-closing 200ms linear;
animation-fill-mode: forwards;
animation-delay: 50ms;
opacity: 0.85;
}
#permissions-modal-wrapper.closing .modal-wrapper {
animation: permissions-modal-wrapper-closing 250ms cubic-bezier(0.19, 1, 0.22, 1);
animation-fill-mode: forwards;
opacity: 1;
transform: scale(1);
}
#permissions-modal-wrapper .modal-wrapper {
animation: permissions-modal-wrapper 250ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
animation-fill-mode: forwards;
transform: scale(0.7);
transform-origin: 50% 50%;
display: flex;
align-items: center;
box-sizing: border-box;
contain: content;
justify-content: center;
top: 0;
left: 0;
bottom: 0;
right: 0;
opacity: 0;
pointer-events: none;
position: absolute;
user-select: none;
z-index: 1000;
}
#permissions-modal-wrapper .modal-body {
background-color: #36393f;
height: 440px;
width: auto;
/*box-shadow: 0 0 0 1px rgba(32,34,37,.6), 0 2px 10px 0 rgba(0,0,0,.2);*/
flex-direction: row;
overflow: hidden;
display: flex;
flex: 1;
contain: layout;
position: relative;
}
#permissions-modal-wrapper #permissions-modal {
display: flex;
contain: layout;
flex-direction: column;
pointer-events: auto;
border: 1px solid rgba(28,36,43,.6);
border-radius: 5px;
box-shadow: 0 2px 10px 0 rgba(0,0,0,.2);
overflow: hidden;
}
#permissions-modal-wrapper .header {
background-color: #35393e;
box-shadow: 0 2px 3px 0 rgba(0,0,0,.2);
padding: 12px 20px;
z-index: 1;
color: #fff;
font-size: 16px;
font-weight: 700;
line-height: 19px;
}
.role-side, .perm-side {
flex-direction: column;
padding-left: 6px;
}
.role-scroller, .perm-scroller {
contain: layout;
flex: 1;
min-height: 1px;
overflow-y: scroll;
}
#permissions-modal-wrapper .scroller-title {
color: #fff;
padding: 8px 0 4px 4px;
margin-right: 8px;
border-bottom: 1px solid rgba(0,0,0,0.3);
display: none;
}
#permissions-modal-wrapper .role-side {
width: auto;
min-width: 150px;
background: #2f3136;
flex: 0 0 auto;
overflow: hidden;
display: flex;
height: 100%;
min-height: 1px;
position: relative;
}
#permissions-modal-wrapper .role-scroller {
contain: layout;
flex: 1;
min-height: 1px;
overflow-y: scroll;
padding-top: 8px;
}
#permissions-modal-wrapper .role-item {
display: flex;
border-radius: 2px;
padding: 6px;
margin-bottom: 5px;
cursor: pointer;
color: #dcddde;
}
#permissions-modal-wrapper .role-item:hover {
background-color: rgba(0,0,0,0.1);
}
#permissions-modal-wrapper .role-item.selected {
background-color: rgba(0,0,0,0.2);
}
#permissions-modal-wrapper .perm-side {
width: 250px;
background-color: #36393f;
flex: 0 0 auto;
display: flex;
height: 100%;
min-height: 1px;
position: relative;
padding-left: 10px;
}
#permissions-modal-wrapper .perm-item {
box-shadow: inset 0 -1px 0 rgba(79,84,92,.3);
box-sizing: border-box;
height: 44px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-direction: row;
justify-content: flex-start;
align-items: center;
display: flex;
}
#permissions-modal-wrapper .perm-item.allowed svg {
fill: #43B581;
}
#permissions-modal-wrapper .perm-item.denied svg {
fill: #F04747;
}
#permissions-modal-wrapper .perm-name {
display: inline;
flex: 1;
font-size: 16px;
font-weight: 400;
overflow: hidden;
text-overflow: ellipsis;
user-select: text;
color: #dcddde;
margin-left: 10px;
}
.member-perms::-webkit-scrollbar-thumb, .member-perms::-webkit-scrollbar-track,
#permissions-modal-wrapper *::-webkit-scrollbar-thumb, #permissions-modal-wrapper *::-webkit-scrollbar-track {
background-clip: padding-box;
border-radius: 7.5px;
border-style: solid;
border-width: 3px;
visibility: hidden;
}
.member-perms:hover::-webkit-scrollbar-thumb, .member-perms:hover::-webkit-scrollbar-track,
#permissions-modal-wrapper *:hover::-webkit-scrollbar-thumb, #permissions-modal-wrapper *:hover::-webkit-scrollbar-track {
visibility: visible;
}
.member-perms::-webkit-scrollbar-track,
#permissions-modal-wrapper *::-webkit-scrollbar-track {
border-width: initial;
background-color: transparent;
border: 2px solid transparent;
}
.member-perms::-webkit-scrollbar-thumb,
#permissions-modal-wrapper *::-webkit-scrollbar-thumb {
border: 2px solid transparent;
border-radius: 4px;
cursor: move;
background-color: rgba(32,34,37,.6);
}
.member-perms::-webkit-scrollbar,
#permissions-modal-wrapper *::-webkit-scrollbar {
height: 8px;
width: 8px;
}`;
this.listHTML = `<div id="permissions-popout">
<div class="member-perms-header \${bodyTitle}">
<div class="member-perms-title">\${label}</div>
<span class="perm-details">
<svg name="Details" viewBox="0 0 24 24" class="perm-details-button" fill="currentColor">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>
</svg>
</span>
</div>
<ul class="member-perms \${root} \${rolesList} \${endBodySection}"></ul>
</div>`;
this.itemHTML = `<li class="member-perm \${role}">
<div class="perm-circle \${roleCircle}"></div>
<div class="name \${roleName}"></div>
</li>`;
this.modalHTML = `<div id="permissions-modal-wrapper">
<div class="callout-backdrop \${backdrop}"></div>
<div class="modal-wrapper \${modal}">
<div id="permissions-modal" class="\${inner}">
<div class="header"><div class="title">\${header}</div></div>
<div class="modal-body">
<div class="role-side">
<span class="scroller-title role-list-title">\${rolesLabel}</span>
<div class="role-scroller">
</div>
</div>
<div class="perm-side">
<span class="scroller-title perm-list-title">\${permissionsLabel}</span>
<div class="perm-scroller">
</div>
</div>
</div>
</div>
</div>
</div>`;
this.modalItem = `<div class="perm-item"><span class="perm-name"></span></div>`;
this.modalButton = `<div class="role-item"><span class="role-name"></span></div>`;
this.modalButtonUser = `<div class="role-item"><div class="wrapper-2F3Zv8 xsmall-3afG_L"><div class="image-33JSyf xsmall-3afG_L" style="background-image: url('\${avatarUrl}');"></div></div><span class="role-name marginLeft8-1YseBe"></span></div>`;
this.permAllowedIcon = `<svg height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>`;
this.permDeniedIcon = `<svg height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z"/></svg>`;
this.contextObserver = new MutationObserver((changes) => {
for (let change in changes) this.observeContextMenus(changes[change]);
});
this.cancelUserPopout = () => {};
}
onStart() {
PluginUtilities.addStyle(this.getName(), this.css);
this.listHTML = Utilities.formatTString(this.listHTML, DiscordClasses.UserPopout);
this.listHTML = Utilities.formatTString(this.listHTML, DiscordClasses.PopoutRoles);
this.itemHTML = Utilities.formatTString(this.itemHTML, DiscordClasses.PopoutRoles);
this.modalHTML = Utilities.formatTString(this.modalHTML, DiscordClasses.Backdrop);
this.modalHTML = Utilities.formatTString(this.modalHTML, DiscordClasses.Modals);
if (this.settings.popouts) this.bindPopouts();
if (this.settings.contextMenus) this.bindContextMenus();
}
onStop() {
PluginUtilities.removeStyle(this.getName());
this.unbindPopouts();
this.unbindContextMenus();
}
bindPopouts() {
let pViewer = this;
let UserPopout = DiscordModules.UserPopout;
let popoutMount = function() {
const user = this.state.guildMember;
const guild = this.state.guild;
const name = this.state.nickname ? this.state.nickname : this.props.user.username;
if (!user || !guild || !name) return;
const userRoles = user.roles.slice(0);
userRoles.push(guild.id);
userRoles.reverse();
let perms = 0;
const permBlock = DOMTools.createElement(Utilities.formatTString(pViewer.listHTML, {label: pViewer.strings.popoutLabel}));
const memberPerms = permBlock.find(".member-perms");
const strings = DiscordModules.Strings;
for (let r = 0; r < userRoles.length; r++) {
const role = userRoles[r];
perms = perms | guild.roles[role].permissions;
for (let perm in DiscordPerms) {
var permName = strings[perm];
const hasPerm = (perms & DiscordPerms[perm]) == DiscordPerms[perm];
if (hasPerm && !memberPerms.find(`[data-name="${permName}"]`)) {
const element = DOMTools.createElement(pViewer.itemHTML);
let roleColor = guild.roles[role].colorString;
element.find(".name").textContent = permName;
element.setAttribute("data-name", permName);
if (!roleColor) roleColor = "#B9BBBE";
element.find(".perm-circle").css("background-color", ColorConverter.rgbToAlpha(roleColor, 1));
element.css("border-color", ColorConverter.rgbToAlpha(roleColor, 0.6));
memberPerms.prepend(element);
}
}
}
const popout = DiscordModules.ReactDOM.findDOMNode(this);
permBlock.find(".perm-details").on("click", () => {
pViewer.showModal(pViewer.createModalUser(name, user, guild));
});
permBlock.insertAfter(popout.querySelector(DiscordSelectors.UserPopout.rolesList));
};
this.cancelUserPopout = Patcher.after(UserPopout.prototype, "componentDidMount", (thisObject) => {
let bound = popoutMount.bind(thisObject); bound();
});
}
unbindPopouts() {
this.cancelUserPopout();
}
bindContextMenus() {
this.contextObserver.observe(document.querySelector("#app-mount"), {childList: true, subtree: true});
}
unbindContextMenus() {
this.contextObserver.disconnect();
}
observeContextMenus(e) {
if (!e.addedNodes.length || !(e.addedNodes[0] instanceof Element) || !e.addedNodes[0].classList) return;
const elem = e.addedNodes[0];
const isContextMenu = elem.matches(DiscordSelectors.ContextMenu.contextMenu);
if (!isContextMenu) return;
const contextMenu = elem;
const memberContext = ReactTools.getReactProperty(contextMenu, "return.return.return.return.memoizedProps.user");
const messageUser = ReactTools.getReactProperty(contextMenu, "return.return.return.return.memoizedProps.guildId");
let menuItem = null;
if (memberContext || messageUser) menuItem = this.userContextMenu(contextMenu, memberContext.id);
let isGuildContext = ReactTools.getReactProperty(contextMenu, "return.memoizedProps.type") == "GUILD_ICON_BAR";
if (isGuildContext) menuItem = this.guildContextMenu(contextMenu, ReactTools.getReactProperty(contextMenu, "return.memoizedProps.guild"));
let isChannelContext = ReactTools.getReactProperty(contextMenu, "return.memoizedProps.type");
if (isChannelContext && isChannelContext.startsWith("CHANNEL_")) menuItem = this.channelContextMenu(contextMenu, ReactTools.getReactProperty(contextMenu, "return.memoizedProps.channel"), ReactTools.getReactProperty(contextMenu, "return.memoizedProps.guild"));
if (!menuItem) return;
contextMenu.find(DiscordSelectors.ContextMenu.item).after(menuItem.getElement());
ContextMenu.updateDiscordMenu(contextMenu);
}
channelContextMenu(contextMenu, channel, guild) {
return new ContextMenu.TextItem(this.strings.contextMenuLabel, {callback: () => {
contextMenu.style.display = "none";
if (!Object.keys(channel.permissionOverwrites).length) return Toasts.info(`#${channel.name} has no permission overrides`);
this.showModal(this.createModalChannel(channel.name, channel, guild));
}});
}
guildContextMenu(contextMenu, guild) {
return new ContextMenu.TextItem(this.strings.contextMenuLabel, {callback: () => {
contextMenu.style.display = "none";
this.showModal(this.createModalGuild(guild.name, guild));
}});
}
userContextMenu(contextMenu, id) {
const guildId = SelectedGuildStore.getGuildId();
const guild = GuildStore.getGuild(guildId);
if (!guild) return null;
const user = MemberStore.getMember(guildId, id);
const name = user.nick ? user.nick : UserStore.getUser(user.userId).username;
if (!user || !name) return null;
return new ContextMenu.TextItem(this.strings.contextMenuLabel, {callback: () => {
contextMenu.style.display = "none";
this.showModal(this.createModalUser(name, user, guild));
}});
}
showModal(modal) {
const popout = document.querySelector("[class*=\"userPopout-\"]");
if (popout) popout.style.display = "none";
const app = document.querySelector("[class*=\"app-\"]");
if (app) app.append(modal);
else document.querySelector("#app-mount").append(modal);
}
createModalChannel(name, channel, guild) {
return this.createModal(`#${name}`, channel.permissionOverwrites, guild.roles, true);
}
createModalUser(name, user, guild) {
const userRoles = user.roles.slice(0);
const guildRoles = JSON.parse(JSON.stringify(guild.roles));
userRoles.push(guild.id);
userRoles.sort((a, b) => {return guildRoles[b].position - guildRoles[a].position;});
if (user.userId == guild.ownerId) {
userRoles.push(user.userId);
guildRoles[user.userId] = {name: this.strings.modal.owner, permissions: DiscordModules.Permissions.ALL};
}
return this.createModal(name, userRoles, guildRoles);
}
createModalGuild(name, guild) {
return this.createModal(name, guild.roles);
}
createModal(title, displayRoles, referenceRoles, isOverride = false) {
if (!referenceRoles) referenceRoles = displayRoles;
const modal = DOMTools.createElement(Utilities.formatTString(Utilities.formatTString(this.modalHTML, this.strings.modal), {name: title}));
modal.find(".callout-backdrop").on("click", () => {
modal.addClass("closing");
setTimeout(() => { modal.remove(); }, 300);
});
const strings = DiscordModules.Strings;
for (const r in displayRoles) {
const role = Array.isArray(displayRoles) ? displayRoles[r] : r;
let item = DOMTools.createElement(!isOverride || displayRoles[role].type == "role" ? this.modalButton : Utilities.formatTString(this.modalButtonUser, {avatarUrl: UserStore.getUser(role).avatarURL}));
if (!isOverride || displayRoles[role].type == "role") item.css("color", referenceRoles[role].colorString);
else item.css("color", MemberStore.getMember(DiscordModules.SelectedGuildStore.getGuildId(), role).colorString);
if (isOverride) item.find(".role-name").textContent = displayRoles[role].type == "role" ? referenceRoles[role].name : UserStore.getUser(role).username;
else item.find(".role-name").textContent = referenceRoles[role].name;
modal.find(".role-scroller").append(item);
item.on("click", () => {
modal.findAll(".role-item.selected").forEach(e => e.removeClass("selected"));
item.addClass("selected");
let allowed = isOverride ? displayRoles[role].allow : referenceRoles[role].permissions;
let denied = isOverride ? displayRoles[role].deny : null;
let permList = modal.find(".perm-scroller");
permList.innerHTML = "";
for (let perm in DiscordPerms) {
let element = DOMTools.createElement(this.modalItem);
let permAllowed = (allowed & DiscordPerms[perm]) == DiscordPerms[perm];
let permDenied = isOverride ? (denied & DiscordPerms[perm]) == DiscordPerms[perm] : !permAllowed;
if (!permAllowed && !permDenied) continue;
if (permAllowed) {
element.addClass("allowed");
element.prepend(DOMTools.createElement(this.permAllowedIcon));
}
if (permDenied) {
element.addClass("denied");
element.prepend(DOMTools.createElement(this.permDeniedIcon));
}
element.find(".perm-name").textContent = strings[perm];
permList.append(element);
}
});
}
modal.find(".role-item").click();
return modal;
}
getSettingsPanel() {
const panel = this.buildSettingsPanel();
panel.addListener(() => {
this.unbindPopouts();
this.unbindContextMenus();
if (this.settings.popouts) this.bindPopouts();
if (this.settings.contextMenu) this.bindContextMenus();
});
return panel.getElement();
}
};
};
return plugin(Plugin, Api);
})(global.ZeresPluginLibrary.buildPlugin(config));
})();

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "0.1.3",
"hasShownChangelog": true
}
}

View File

@ -1,189 +0,0 @@
//META{"name":"RoleMembers","displayName":"RoleMembers","website":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/RoleMembers","source":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/RoleMembers/RoleMembers.plugin.js"}*//
var RoleMembers = (() => {
const config = {"info":{"name":"RoleMembers","authors":[{"name":"Zerebos","discord_id":"249746236008169473","github_username":"rauenzi","twitter_username":"ZackRauen"}],"version":"0.1.3","description":"Allows you to see the members of each role on a server. Support Server: bit.ly/ZeresServer","github":"https://github.com/rauenzi/BetterDiscordAddons/tree/master/Plugins/RoleMembers","github_raw":"https://raw.githubusercontent.com/rauenzi/BetterDiscordAddons/master/Plugins/RoleMembers/RoleMembers.plugin.js"},"changelog":[{"title":"Sorry","type":"fixes","items":["I keep breaking shit, hopefully this time it's fixed."]}],"main":"index.js"};
return !global.ZeresPluginLibrary ? class {
getName() {return config.info.name;}
getAuthor() {return config.info.authors.map(a => a.name).join(", ");}
getDescription() {return config.info.description;}
getVersion() {return config.info.version;}
load() {window.BdApi.alert("Library Missing",`The library plugin needed for ${config.info.name} is missing.<br /><br /> <a href="https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js" target="_blank">Click here to download the library!</a>`);}
start() {}
stop() {}
} : (([Plugin, Api]) => {
const plugin = (Plugin, Api) => {
const {ContextMenu, Popouts, DiscordModules, DiscordSelectors, DiscordClasses, ReactTools, Utilities} = Api;
const from = arr => arr && arr.length > 0 && Object.assign(...arr.map( ([k, v]) => ({[k]: v}) ));
const filter = (obj, predicate) => from(Object.entries(obj).filter((o) => {return predicate(o[1]);}));
const GuildStore = DiscordModules.GuildStore;
const SelectedGuildStore = DiscordModules.SelectedGuildStore;
const PopoutStack = DiscordModules.PopoutStack;
const GuildMemberStore = DiscordModules.GuildMemberStore;
const UserStore = DiscordModules.UserStore;
const ImageResolver = DiscordModules.ImageResolver;
return class RoleMembers extends Plugin {
constructor() {
super();
this.popout = `<div class="\${className} popout-role-members" style="margin-top: 0;">
<div class="popoutList-T9CKZQ guildSettingsAuditLogsUserFilterPopout-3Jg5NE elevationBorderHigh-2WYJ09 role-members-popout">
<div class="flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2NDFzi alignStretch-DpGPf3 noWrap-3jynv6 searchBar-1MOL6S popoutListInput-1l9TUI size14-3iUx6q" style="flex: 1 1 auto;">
<input class="input-3Xdcic flexChild-faoVW3" value="" placeholder="Search Members — \${memberCount}" style="flex: 1 1 auto;">
<div class="searchBarIcon-18QaPq flexChild-faoVW3">
<i class="icon-1S6UIr eyeGlass-2cMHx7 visible-3bFCH-"></i>
<i class="icon-1S6UIr clear--Eywng"></i>
</div>
</div>
<div class="divider-3573oO divider-faSUbd marginTop8-1DLZ1n marginBottom8-AtZOdT"></div>
<div class="scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerTrack-1ZIpsv">
<div class="scroller-2FKFPG scroller-2CvAgC role-members">
</div>
</div>
</div>
</div>`;
this.item = `<div class="flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2NDFzi alignCenter-1dQNNs noWrap-3jynv6 selectableItem-1MP3MQ role-member" style="flex: 1 1 auto; height: auto;">
<div class="flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2NDFzi alignCenter-1dQNNs noWrap-3jynv6 selectableItemLabel-1RKQjD"
style="flex: 1 1 auto;">
<div class="avatar-16XVId small-5Os1Bb flexChild-faoVW3">
<div class="image-33JSyf" style="flex: 0 1 auto; background-image: url(&quot;\${avatar_url}&quot;);"></div>
</div>
<div class="userText-1WdPps" style="flex: 1 1 auto;">
<span class="username">\${username}</span><span class="discriminator-3tYCOD">\${discriminator}</span>
</div>
</div>
</div>`;
this.contextObserver = new MutationObserver((changes) => {
for (let change in changes) this.observeContextMenus(changes[change]);
});
}
onStart() {
this.contextObserver.observe(document.querySelector("#app-mount"), {childList: true, subtree: true});
$(document).on("click." + this.getName(), ".mention", (e) => {
let isRoleMention = ReactTools.getReactProperty(e.target, "return.memoizedState") == null || ReactTools.getReactProperty(e.target, "return.memoizedState.isOpen") === undefined;
if (!isRoleMention) return;
let currentServer = SelectedGuildStore.getGuildId();
let roles = GuildStore.getGuild(currentServer).roles;
let name = e.target.textContent.slice(1);
let role = filter(roles, r => r.name == name);
if (!role) return;
role = role[Object.keys(role)[0]];
this.showRolePopout(e.target, currentServer, role.id);
});
}
onStop() {
$(".popout-role-members").remove();
$("*").off("." + this.getName());
$(document).off("click." + this.getName(), ".mention");
this.contextObserver.disconnect();
}
showPopout(popout, target) {
popout.appendTo(document.querySelector(DiscordSelectors.Popouts.popouts));
const maxWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
const maxHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
let offset = target.getBoundingClientRect();
if (offset.right + popout.outerHeight() >= maxWidth) {
popout[0].addClass(DiscordClasses.Popouts.popoutLeft);
popout.css("left", Math.round(offset.left - popout.outerWidth() - 20));
popout.animate({left: Math.round(offset.left - popout.outerWidth() - 10)}, 100);
}
else {
popout[0].addClass(DiscordClasses.Popouts.popoutRight);
popout.css("left", offset.right + 10);
popout.animate({left: offset.right}, 100);
}
if (offset.top + popout.outerHeight() >= maxHeight) popout.css("top", Math.round(maxHeight - popout.outerHeight()));
else popout.css("top", offset.top);
let listener = document.addEventListener("click", (e) => {
let target = $(e.target);
if (!target.hasClass("popout-role-members") && !target.parents(".popout-role-members").length) popout.remove(), document.removeEventListener("click", listener);
});
}
observeContextMenus(e) {
if (!e.addedNodes.length || !(e.addedNodes[0] instanceof Element) || !e.addedNodes[0].classList) return;
let elem = e.addedNodes[0];
let context = elem.matches(DiscordSelectors.ContextMenu.contextMenu) ? elem : elem.querySelector(DiscordSelectors.ContextMenu.contextMenu);
if (!context) return;
let isGuildContext = ReactTools.getReactProperty(context, "return.memoizedProps.type") == "GUILD_ICON_BAR";
if (!isGuildContext) return;
let guildId = ReactTools.getReactProperty(context, "return.memoizedProps.guild.id");
let roles = GuildStore.getGuild(guildId).roles;
let roleItems = [];
for (let roleId in roles) {
//if (roleId == guildId) continue;
let role = roles[roleId];
let item = new ContextMenu.TextItem(role.name, {
callback: (event) => {
event.stopPropagation();
$(".popout-role-members").remove();
this.showRolePopout(item.element, guildId, role.id);
// $(context).hide();
}
});
if (role.colorString) item.element.css("color", role.colorString);
roleItems.push(item);
}
let subMenu = new ContextMenu.SubMenuItem("Role Members", new ContextMenu.Menu(true).addItems(...roleItems));
$(context).children(DiscordSelectors.ContextMenu.itemGroup).first().append(subMenu.element);
ContextMenu.updateDiscordMenu(context);
}
showRolePopout(target, guildId, roleId) {
let roles = GuildStore.getGuild(guildId).roles;
let role = roles[roleId];
let members = GuildMemberStore.getMembers(guildId);
if (guildId != roleId) members = members.filter(m => m.roles.includes(role.id));
let popout = $(Utilities.formatTString(this.popout, {className: DiscordClasses.Popouts.popout.add(DiscordClasses.Popouts.noArrow), memberCount: members.length}));
let searchInput = popout.find("input");
searchInput.on("keyup", () => {
let items = popout[0].querySelectorAll(".role-member");
for (let i = 0, len = items.length; i < len; i++) {
let search = searchInput.val().toLowerCase();
let item = items[i];
let username = item.querySelector(".username").textContent.toLowerCase();
if (!username.includes(search)) item.style.display = "none";
else item.style.display = "";
}
});
let scroller = popout.find(".role-members");
for (let member of members) {
let user = UserStore.getUser(member.userId);
let elem = $(Utilities.formatTString(this.item, {username: user.username, discriminator: "#" + user.discriminator, avatar_url: ImageResolver.getUserAvatarURL(user)}));
elem.on("click", () => {
PopoutStack.close("role-members");
elem.addClass("popout-open");
if (elem.hasClass("popout-open")) Popouts.showUserPopout(elem[0], user, {guild: guildId});
});
scroller.append(elem);
}
this.showPopout(popout, target);
searchInput.focus();
}
};
};
return plugin(Plugin, Api);
})(global.ZeresPluginLibrary.buildPlugin(config));
})();

View File

@ -1,6 +0,0 @@
{
"currentVersionInfo": {
"version": "1.2.2",
"hasShownChangelog": true
}
}

View File

@ -1,84 +0,0 @@
//META{"name":"copyCode"}*//
var copyCode = function() {};
copyCode.prototype.inject = function() {
setTimeout(function(){
$("code.hljs").each(function() {
if (!$(this).find('.copybutton').length) {
$(this).css({
"position": "relative"
});
var button = $("<button>Copy</button>").addClass("copybutton").css({
"color": "#839496",
"border": "2px solid #282b30",
"background-color": "#2e3136",
"position": "absolute",
"right": "0",
"bottom": "0"
});
button.click(function() {
$(this).hide();
var text = $(this).parent()[0];
var range = document.createRange();
range.selectNode(text);
window.getSelection().addRange(range);
try {
document.execCommand('copy');
} catch (err) {
console.log(err);
}
window.getSelection().removeAllRanges();
$(this).show();
});
$(this).append(button);
}
});
}, 100);
};
copyCode.prototype.observer = function(e) {
this.inject();
};
copyCode.prototype.start = function() {
this.inject();
};
copyCode.prototype.load = function() {};
copyCode.prototype.enable = function() {};
copyCode.prototype.onSwitch = function() {};
copyCode.prototype.onMessage = function() {};
copyCode.prototype.getSettingsPanel = function() {
return "";
};
copyCode.prototype.getName = function() {
return "Copy Code Plugin";
};
copyCode.prototype.getDescription = function() {
return "Copies Code from Code Blocks with a Button";
};
copyCode.prototype.getVersion = function() {
return "2.0";
};
copyCode.prototype.getAuthor = function() {
return "Finicalmist";
};
copyCode.prototype.remove = function() {
$("code.hljs").css({
"position": ""
});
$(".copybutton").remove();
};
copyCode.prototype.stop = function() {};
copyCode.prototype.unload = function() {};
copyCode.prototype.disable = function() {};

View File

@ -1,48 +0,0 @@
//META{"name":"dblClickEdit"}*//
var dblClickEdit = function () {};
dblClickEdit.prototype.handler = function(e) {
const message = e.target.closest('[class^=messageCozy]') || e.target.closest('[class^=messageCompact]');
if (!message) return;
const btn = message.querySelector('[class^=buttonContainer] [class^=button-]');
if (!btn) return;
btn.click();
const popup = document.querySelector('[class^=container][role=menu]');
if (!popup) return;
const rii = popup[Object.keys(popup).find(k => k.startsWith('__reactInternal'))];
if (!rii || !rii.memoizedProps || !rii.memoizedProps.children || !rii.memoizedProps.children[1] || !rii.memoizedProps.children[1].props || !rii.memoizedProps.children[1].props.onClick) return;
rii.memoizedProps.children[1].props.onClick();
};
dblClickEdit.prototype.onMessage = function () {
};
dblClickEdit.prototype.onSwitch = function () {
};
dblClickEdit.prototype.start = function () {
document.addEventListener('dblclick', this.handler);
};
dblClickEdit.prototype.load = function () {};
dblClickEdit.prototype.unload = function () {
document.removeEventListener('dblclick', this.handler);
};
dblClickEdit.prototype.stop = function () {
document.removeEventListener('dblclick', this.handler);
};
dblClickEdit.prototype.getSettingsPanel = function () {
return "";
};
dblClickEdit.prototype.getName = function () {
return "Double click edit";
};
dblClickEdit.prototype.getDescription = function () {
return "Double click messages to edit them";
};
dblClickEdit.prototype.getVersion = function () {
return "0.2.1";
};
dblClickEdit.prototype.getAuthor = function () {
return "Jiiks";
};

File diff suppressed because one or more lines are too long

View File

@ -1,295 +0,0 @@
//META{"name":"GreenText","displayName":"GreenText","website":"https://github.com/Arashiryuu","source":"https://github.com/Arashiryuu/crap/blob/master/greenText.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.\nJust reload Discord with Ctrl+R.', 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!\nJust reload Discord with Ctrl+R.', 0, 'Successfully installed', 0x40);
}
WScript.Quit();
@else@*/
var GreenText = (() => {
/* Setup */
const config = {
main: 'index.js',
info: {
name: 'GreenText',
authors: [
{
name: 'Arashiryuu',
discord_id: '238108500109033472',
github_username: 'Arashiryuu',
twitter_username: ''
}
],
version: '1.0.8',
description: 'Turns sentences beginning with "\>" green.',
github: 'https://github.com/Arashiryuu',
github_raw: 'https://raw.githubusercontent.com/Arashiryuu/crap/master/greenText.plugin.js'
},
changelog: [
{
title: 'Updated',
type: 'improved',
items: ['Compact mode improvements.']
}
]
};
/* Utility */
const log = function() {
/**
* @type {Array}
*/
const args = Array.prototype.slice.call(arguments);
args.unshift(`%c[${config.info.name}]`, 'color: #3A71C1; font-weight: 700;');
return console.log.apply(this, args);
};
const err = function() {
/**
* @type {Array}
*/
const args = Array.prototype.slice.call(arguments);
args.unshift(`%c[${config.info.name}]`, 'color: #3A71C1; font-weight: 700;');
return console.error.apply(this, args);
};
/* Build */
const buildPlugin = ([Plugin, Api]) => {
const { Toasts, Logger, DOMTools, WebpackModules, DiscordSelectors } = Api;
return class GreenText extends Plugin {
constructor() {
super();
this._css;
this.regex = /^&gt;\S?.+|^>\S?.+/igm;
this.css = `
${DiscordSelectors.Messages.message.value.trim()} #GreenText {
color: #709900 !important;
transition: all 200ms ease;
}
${DiscordSelectors.Messages.message.value.trim()} #GreenText:hover {
font-weight: bold;
}
`;
this.switchList = [
'app',
DiscordSelectors.TitleWrap.chat.value.split('.')[1],
WebpackModules.getByProps('messages', 'messagesWrapper').messagesWrapper
];
this.messageList = [
DiscordSelectors.Messages.container.value.slice(2),
DiscordSelectors.Messages.message.value.slice(2)
];
}
/* Methods */
onStart() {
this.injectCSS();
this.run();
Toasts.info(`${this.name} ${this.version} has started!`, { icon: true, timeout: 2e3 });
}
onStop() {
this.removeCSS();
Toasts.info(`${this.name} ${this.version} has stopped!`, { icon: true, timeout: 2e3 });
}
run() {
const messages = document.querySelectorAll(`.${WebpackModules.getByProps('markup').markup}`);
if (this.isCompact()) {
for (const message of messages) {
const textNodes = Array.from(message.childNodes).filter((node) => node.nodeType === 3);
for (const node of textNodes) {
const matches = node.data.match(this.regex);
if (!matches || !matches.length) continue;
const data = node.data.split('\n');
const replaceNodes = data.reduce((arr, text) => {
if (text.match(this.regex)) {
const el = DOMTools.parseHTML(`<span id="GreenText">${text}\n</span>`);
arr.push(el);
return arr;
}
arr.push(document.createTextNode(`${text}\n`));
return arr;
}, []);
if (!replaceNodes[0].id) replaceNodes[0].data = `${replaceNodes[0].data.trim()}\n`;
if (!replaceNodes[replaceNodes.length - 1].id) replaceNodes[replaceNodes.length - 1].data = `${replaceNodes[replaceNodes.length - 1].data.trim()}`;
node.replaceWith(...replaceNodes);
}
}
}
for (const message of messages) {
const matches = message.innerHTML.match(this.regex);
if (!matches || !matches.length) continue;
const html = message.innerHTML;
message.innerHTML = html.replace(this.regex, '<span id="GreenText">$&</span>');
}
}
injectCSS() {
const s = DOMTools.parseHTML(`<style id="GreenTextCSS" type="text/css">${this.css}</style>`);
DOMTools.appendTo(s, document.head);
}
removeCSS() {
const e = document.getElementById('GreenTextCSS');
if (!e) return;
e.remove();
}
isCompact() {
const message = document.querySelector(`.${WebpackModules.getByProps('markup').markup}`);
if (!message) return false;
return message.classList.contains(WebpackModules.getByProps('isCompact').isCompact);
}
/* Observer */
observer({ addedNodes }) {
if (addedNodes.length && addedNodes[0].classList && this.switchList.includes(addedNodes[0].classList[0])) {
this.run();
} else if (addedNodes.length && addedNodes[0].classList && this.messageList.includes(addedNodes[0].classList[addedNodes[0].classList.length - 1])) {
this.run();
}
}
/* Setters */
set css(style = '') {
return this._css = style.split(/\s+/g).join(' ').trim();
}
/* Getters */
get [Symbol.toStringTag]() {
return 'Plugin';
}
get css() {
return this._css;
}
get name() {
return config.info.name;
}
get short() {
let string = '';
for (let i = 0, len = config.info.name.length; i < len; i++) {
const char = config.info.name[i];
if (char === char.toUpperCase()) string += char;
}
return string;
}
get author() {
return config.info.authors.map((author) => author.name).join(', ');
}
get version() {
return config.info.version;
}
get description() {
return config.info.description;
}
}
};
/* Finalize */
return !global.ZeresPluginLibrary
? class {
getName() {
return this.name.replace(/\s+/g, '');
}
getAuthor() {
return this.author;
}
getVersion() {
return this.version;
}
getDescription() {
return this.description;
}
stop() {
Logger.log('Stopped!');
}
load() {
window.BdApi.alert('Missing Library', `The library plugin needed for ${config.info.name} is missing.<br /><br /> <a href="https://betterdiscord.net/ghdl?url=https://raw.githubusercontent.com/rauenzi/BDPluginLibrary/master/release/0PluginLibrary.plugin.js" target="_blank">Click here to download the library!</a>`);
}
start() {
Logger.log('Started!');
}
/* Getters */
get [Symbol.toStringTag]() {
return 'Plugin';
}
get name() {
return config.info.name;
}
get short() {
let string = '';
for (let i = 0, len = config.info.name.length; i < len; i++) {
const char = config.info.name[i];
if (char === char.toUpperCase()) string += char;
}
return string;
}
get author() {
return config.info.authors.map((author) => author.name).join(', ');
}
get version() {
return config.info.version;
}
get description() {
return config.info.description;
}
}
: buildPlugin(global.ZeresPluginLibrary.buildPlugin(config));
})();
/*@end@*/

View File

@ -1,28 +0,0 @@
//META{"name":"linkProfilePicture"}*//
class linkProfilePicture {
getName(){return "Link-Profile-Picture"}
getDescription(){return "Lets you click users' avatars on their profile page to view a bigger version in your browser."}
getVersion(){return "1.0.3"}
getAuthor(){return "square"}
load(){}
start(){}
stop(){}
observer(mutation){
var x, i = 0,
ref = mutation.addedNodes,
wrapper, a, pic, url;
while(x = ref[i++]) if("DIV" === x.nodeName && 0 === x.className.indexOf("modal-") && (wrapper = x.querySelector(".avatar-3EQepX.profile-ZOdGIb")) &&
(pic = wrapper.querySelector(".image-33JSyf")) && (url = pic.style.backgroundImage.match(/https.+(?:webp|png|gif)/))){
a = document.createElement("a");
a.href = url[0] + "?size=2048"; // returns biggest version (can be smaller than 2048); if the pic is blurry it's due to the original or what discord did to it
a.target = "_blank"; a.rel = "noreferrer";
wrapper.insertBefore(a, pic);
a.appendChild(pic);
break;
}
}
}

View File

@ -1,783 +0,0 @@
//META{"name":"p_no_send_scroll"}*//
/*@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 tried to run me directly. This is not desired behavior! It will work now, but likely will not work with other plugins. Even worse, with other untrusted plugins it may lead computer virus infection!", 0, "I'm a plugin for BetterDiscord", 0x30);
if (fs.GetParentFolderName(pathSelf) === fs.GetAbsolutePathName(pathPlugins)) {
shell.Popup("I'm in the correct folder already.\nJust reload Discord with Ctrl+R.", 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!\nJust reload Discord with Ctrl+R.", 0, "Successfully installed", 0x40);
}
WScript.Quit();
@else @*/
var p_no_send_scroll =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(15);
/***/ }),
/* 1 */,
/* 2 */,
/* 3 */
/***/ (function(module, exports) {
/**
* BetterDiscord Plugin Base Class
* Copyright (c) 2015-present Jiiks - https://jiiks.net
* All rights reserved.
* https://github.com/Jiiks/BetterDiscordApp - https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
class Plugin {
constructor(props) {
this.props = props;
}
get authors() {
return this.props.authors;
}
get version() {
return this.props.version;
}
get name() {
return this.props.name;
}
get description() {
return this.props.description;
}
get reloadable() {
return this.props.reloadable;
}
get permissions() {
return this.props.permissions;
}
get storage() {
return this.internal.storage;
}
get settings() {
return this.storage.settings;
}
saveSettings() {
this.storage.save();
this.onSave(this.settings);
}
getSetting(id) {
let setting = this.storage.settings.find(setting => { return setting.id === id; });
if (setting && setting.value !== undefined) return setting.value;
}
get enabled() {
return this.getSetting("enabled");
}
}
module.exports = Plugin;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
/**
* BetterDiscord Plugin Api
* Copyright (c) 2015-present Jiiks - https://jiiks.net
* All rights reserved.
* https://github.com/Jiiks/BetterDiscordApp - https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
const Logger = __webpack_require__(5);
const Api = __webpack_require__(6);
class PluginApi {
constructor(props) {
this.props = props;
}
log(message, level) {
Logger.log(this.props.name, message, level);
}
injectStyle(id, css) {
Api.injectStyle(id, css);
}
removeStyle(id) {
Api.removeStyle(id);
}
injectScript(id, script) {
Api.injectScript(id, script);
}
removeScript(id) {
Api.removeScript(id);
}
}
module.exports = PluginApi;
/***/ }),
/* 5 */
/***/ (function(module, exports) {
/**
* BetterDiscord Logger Module
* Copyright (c) 2015-present Jiiks - https://jiiks.net
* All rights reserved.
* https://github.com/Jiiks/BetterDiscordApp - https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
class Logger {
static log(moduleName, message, level = 'log') {
level = this.parseLevel(level);
console[level]('[%cBetter%cDiscord:%s] %s', 'color: #3E82E5', '', `${moduleName}${level === 'debug' ? '|DBG' : ''}`, message);
}
static logObject(moduleName, message, object, level) {
if (message) this.log(moduleName, message, level);
console.log(object);
}
static debug(moduleName, message, level, force) {
if (!force) { if (!window.BetterDiscord || !window.BetterDiscord.debug) return; }
this.log(moduleName, message, 'debug', true);
}
static debugObject(moduleName, message, object, level, force) {
if (!force) { if (!window.BetterDiscord || !window.BetterDiscord.debug) return; }
if (message) this.debug(moduleName, message, level, force);
console.debug(object);
}
static parseLevel(level) {
return {
'log': 'log',
'warn': 'warn',
'err': 'error',
'error': 'error',
'debug': 'debug',
'dbg': 'debug',
'info': 'info'
}[level];
}
}
module.exports = Logger;
/***/ }),
/* 6 */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
/**
* BetterDiscord Plugin Storage
* Copyright (c) 2015-present Jiiks - https://jiiks.net
* All rights reserved.
* https://github.com/Jiiks/BetterDiscordApp - https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
const Utils = __webpack_require__(6);
class PluginStorage {
constructor(path, defaults) {
this.path = `${path}/settings.json`;
this.defaultConfig = defaults;
this.load();
}
load() {
this.settings = JSON.parse(JSON.stringify(this.defaultConfig));
const loadSettings = Utils.tryParse(Utils.readFileSync(this.path));
if (loadSettings) {
Object.keys(loadSettings).map(key => {
this.setSetting(key, loadSettings[key]);
});
}
if (!this.getSetting('enabled')) this.setSetting('enabled', false);
}
save() {
const reduced = this.settings.reduce((result, item) => { result[item.id] = item.value; return result; }, {});
Utils.writeFileSync(this.path, JSON.stringify(reduced));
}
getSetting(id) {
const setting = this.settings.find(setting => setting.id === id);
if (!setting) return null;
return setting.value;
}
setSetting(id, value) {
const setting = this.settings.find(setting => setting.id === id);
if (!setting) {
this.settings.push({ id, value });
} else {
setting.value = value;
}
this.save();
}
setSettings(settings) {
this.settings = settings;
}
}
module.exports = PluginStorage;
/***/ }),
/* 8 */,
/* 9 */,
/* 10 */,
/* 11 */,
/* 12 */,
/* 13 */,
/* 14 */,
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
const v1transpile_version = 6;
module.exports = class {
constructor() {
const config = __webpack_require__(16);
if (!window.v1transpile || window.v1transpile.version < v1transpile_version) {
window.v1transpile = window.v1transpile || {};
window.v1transpile.version = v1transpile_version;
window.v1transpile.Plugin = window.v1transpile.Plugin || __webpack_require__(3);
window.v1transpile.PluginApi = window.v1transpile.PluginApi || __webpack_require__(4);
window.v1transpile.PluginStorage = window.v1transpile.PluginStorage || __webpack_require__(7);
window.v1transpile.Settings = window.v1transpile.Settings || {
/**
* Create and return a new top-level settings panel
* @author noodlebox
* @return {jQuery}
*/
topPanel() {
return $("<form>").addClass("form").css("width", "100%");
},
/**
* Create and return a container for control groups
* @author noodlebox
* @return {jQuery}
*/
controlGroups() {
return $("<div>").addClass("control-groups");
},
/**
* Create and return a flexible control group
* @author noodlebox
* @param {object} settings Settings object
* @param {Element|jQuery|string} settings.label an element or something JQuery-ish or, if string, use as plain text
* @return {jQuery}
*/
controlGroup(settings) {
const group = $("<div>").addClass("control-group");
if (typeof settings.label === "string") {
group.append($("<label>").text(settings.label));
} else if (settings.label !== undefined) {
group.append($("<label>").append(settings.label));
}
return group;
},
/**
* Create and return a group of checkboxes
* @author noodlebox
* @param {object} settings Settings object
* @param {object[]} settings.items an array of settings objects to be passed to checkbox()
* @param {function(state)} settings.callback called with the current state, when it changes state is an array of boolean values
* @return {jQuery}
*/
checkboxGroup(settings) {
settings = $.extend({
items: [],
callback: $.noop,
}, settings);
const state = settings.items.map(item => item.checked === true);
function onClick(i, itemState) {
if (settings.items[i].callback !== undefined) {
settings.items[i].callback(itemState);
}
state[i] = itemState;
settings.callback(state);
}
const group = $("<ul>").addClass("checkbox-group");
group.append(settings.items.map(function(item, i) {
return checkbox($.extend({}, item, {
callback: onClick.bind(undefined, i),
}));
}));
return group;
},
/**
* Create and return a checkbox
* @author noodlebox
* @param {object} settings Settings object
* @param {Element|jQuery|string} settings.label an element or something JQuery-ish or, if string, use as plain text
* @param {Element|jQuery|string} settings.help an element or something JQuery-ish or, if string, use as plain text
* @param {boolean} settings.checked
* @param {boolean} settings.disabled
* @param {function(state)} settings.callback called with the current state, when it changes state is a boolean
* @return {jQuery}
*/
checkbox(settings) {
settings = $.extend({
checked: false,
disabled: false,
callback: $.noop,
}, settings);
const input = $("<input>").attr("type", "checkbox")
.prop("checked", settings.checked)
.prop("disabled", settings.disabled);
const inner = $("<div>").addClass("checkbox-inner")
.append(input)
.append($("<span>"));
const outer = $("<div>").addClass("checkbox").append(inner);
if (settings.disabled) {
outer.addClass("disabled");
}
if (typeof settings.label === "string") {
outer.append($("<span>").text(settings.label));
} else if (settings.label !== undefined) {
outer.append($("<span>").append(settings.label));
}
outer.on("click.kawaiiSettings", function() {
if (!input.prop("disabled")) {
const checked = !input.prop("checked");
input.prop("checked", checked);
settings.callback(checked);
}
});
const item = $("<li>").append(outer);
let help;
if (typeof settings.help === "string") {
help = $("<div>").text(settings.help);
} else if (settings.help !== undefined) {
help = $("<div>").append(settings.help);
}
if (help !== undefined) {
help.appendTo(item)
.addClass("help-text")
.css("margin-top", "-3px")
.css("margin-left", "27px");
}
return item;
},
/**
* Create and return an input
* @author samogot
* @param {object} settings Settings object
* @param {Element|jQuery|string} settings.label an element or something JQuery-ish or, if string, use as plain text
* @param {Element|jQuery|string} settings.help an element or something JQuery-ish or, if string, use as plain text
* @param {boolean} settings.value
* @param {boolean} settings.disabled
* @param {function(state)} settings.callback called with the current state, when it changes. state is a string
* @return {jQuery}
*/
input(settings) {
settings = $.extend({
value: '',
disabled: false,
callback: $.noop,
}, settings);
const input = $("<input>").attr("type", "text")
.prop("value", settings.value)
.prop("disabled", settings.disabled);
const inner = $("<div>").addClass("input-inner")
.append(input)
.append($("<span>"));
const outer = $("<div>").addClass("input").append(inner);
if (settings.disabled) {
outer.addClass("disabled");
}
if (typeof settings.label === "string") {
outer.append($("<span>").text(settings.label));
} else if (settings.label !== undefined) {
outer.append($("<span>").append(settings.label));
}
input.on("change.kawaiiSettings", function() {
if (!input.prop("disabled")) {
const value = input.val();
settings.callback(value);
}
});
const item = $("<li>").append(outer);
let help;
if (typeof settings.help === "string") {
help = $("<div>").text(settings.help);
} else if (settings.help !== undefined) {
help = $("<div>").append(settings.help);
}
if (help !== undefined) {
help.appendTo(item)
.addClass("help-text")
.css("margin-top", "-3px")
.css("margin-left", "27px");
}
return item;
}
};
window.v1transpile.PluginApi.prototype.injectStyle = (id, css) => BdApi.injectCSS(id, css);
window.v1transpile.PluginApi.prototype.removeStyle = (id) => BdApi.clearCSS(id);
window.v1transpile.PluginStorage.prototype.load = function() {
this.settings = JSON.parse(JSON.stringify(this.defaultConfig));
this.path = this.path.replace('/settings.json', '');
if (!window.BdApi) {
return;
}
try {
const loadSettings = BdApi.getData(this.path, "settings");
if (loadSettings) {
Object.keys(loadSettings).map(key => {
this.setSetting(key, loadSettings[key]);
});
}
} catch (err) {
console.warn(this.path, ":", "unable to load settings:", err);
}
};
window.v1transpile.PluginStorage.prototype.save = function() {
const reduced = this.settings.reduce((result, item) => {
result[item.id] = item.value;
return result;
}, {});
try {
BdApi.setData(this.path, "settings", reduced);
} catch (err) {
console.warn(this.path, ":", "unable to save settings:", err);
}
};
window.v1transpile.Vendor = window.v1transpile.Vendor || {
get jQuery() {
return window.jQuery;
},
get $() {
return window.jQuery;
},
get React() {
return window.BDV2.react;
},
get ReactDOM() {
return window.BDV2.reactDom;
},
moment: {}
};
}
const storage = new window.v1transpile.PluginStorage(config.info.name.replace(/\s+/g, '_').toLowerCase(), config.defaultSettings);
const BD = {
Api: new window.v1transpile.PluginApi(config.info),
Storage: storage,
Events: {},
Renderer: {}
};
const plugin = __webpack_require__(17)(window.v1transpile.Plugin, BD, window.v1transpile.Vendor, true);
this.pluginInstance = new plugin(config.info);
this.pluginInstance.internal = {
storage,
path: ''
};
}
start() {
this.pluginInstance.onStart();
this.pluginInstance.storage.load();
}
stop() {
this.pluginInstance.onStop();
}
load() {
}
unload() {
}
getName() {
return this.pluginInstance.name
}
getDescription() {
return this.pluginInstance.description
}
getVersion() {
return this.pluginInstance.version
}
getAuthor() {
return this.pluginInstance.authors.join(', ')
}
getSettingsPanel() {
if (this.pluginInstance.storage.settings.length === 0)
return '';
const Settings = window.v1transpile.Settings;
const panel = Settings.topPanel();
const filterControls = Settings.controlGroups().appendTo(panel);
const Control = Settings.controlGroup({label: this.pluginInstance.name + " settings"})
.appendTo(filterControls);
const saveAndReload = () => {
this.pluginInstance.storage.save();
if (window.pluginCookie && window.pluginCookie[this.pluginInstance.name]) {
this.pluginInstance.onStop();
Promise.resolve().then(() => {
}).then(() => {
this.pluginInstance.onStart();
});
}
};
for (let item of this.pluginInstance.storage.settings) {
let input;
switch (item.type) {
case 'bool':
input = Settings.checkbox({
label: item.text,
help: item.description,
checked: item.value,
callback: state => {
this.pluginInstance.storage.setSetting(item.id, state);
saveAndReload();
},
});
break;
case 'text':
input = Settings.input({
label: item.text,
help: item.description,
value: item.value,
callback: state => {
this.pluginInstance.storage.setSetting(item.id, state);
saveAndReload();
},
});
break;
}
if (input)
Control.append(input)
}
return panel[0];
}
};
/***/ }),
/* 16 */
/***/ (function(module, exports) {
module.exports = {
"info": {
"name": "No send scroll",
"authors": [
"Samogot"
],
"version": "1.3",
"description": "Disables scroll to bottom on sending message",
"repository": "https://github.com/samogot/betterdiscord-plugins.git",
"homepage": "https://github.com/samogot/betterdiscord-plugins/tree/master/v2/No%20send%20scroll",
"reloadable": true
},
"defaultSettings": [],
"permissions": []
};
/***/ }),
/* 17 */
/***/ (function(module, exports) {
module.exports = (Plugin, BD) => {
const {Api} = BD;
const minDIVersion = '1.0';
if (!window.DiscordInternals) {
const message = `Lib Discord Internals v${minDIVersion} or higher not found! Please install or upgrade that utility plugin. See install instructions here https://goo.gl/kQ7UMV`;
Api.log(message, 'warn');
return (class EmptyStubPlugin extends Plugin {
onStart() {
Api.log(message, 'warn');
alert(message);
return false;
}
onStop() {
return true;
}
});
}
class V2Plugin extends Plugin {
onStart() {
const {monkeyPatch, WebpackModules, ReactComponents} = window.DiscordInternals;
const MessageActions = WebpackModules.findByUniqueProperties(['jumpToMessage', '_sendMessage']);
ReactComponents.get('Messages', Messages => {
this.cancelGlobalPatch = monkeyPatch(MessageActions, '_sendMessage', {
before: () => {
const cancel = monkeyPatch(Messages.prototype, 'componentDidUpdate', {
instead: ({callOriginalMethod, thisObject}) => {
if (thisObject.state && thisObject.state.messages && !thisObject.state.messages.hasMoreAfter && !thisObject.isAtBottom()) {
thisObject.state.messages.hasMoreAfter = true;
callOriginalMethod();
thisObject.state.messages.hasMoreAfter = false;
}
else callOriginalMethod();
}
});
setTimeout(cancel, 1000);
}
});
});
return true;
}
onStop() {
this.cancelGlobalPatch();
return true;
}
}
return V2Plugin;
};
/***/ })
/******/ ]);
/*@end @*/

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
//META{"name":"Beard_material_design_theme_addon","description":"User popouts upgraded for Beard's material design theme","author":"mrmaple240, Snow-Pyon & Zerebos (rauenzi)","version":"1.0.5"}*//{}
@import url("https://rawgit.com/Snow-Pyon/BDStuff/master/themes/BMDAddon/import/BMDAddon.css");

View File

@ -1,25 +0,0 @@
/*//META{"name":"Nox","description":"A theme for Discord loosely based on Google's Material Design Guidelines.","author":"Lilian Tedone & Zerebos","version":"1.0.0","update_url":"https://raw.githubusercontent.com/rauenzi/Nox/master/release/Nox.theme.css"}*//**/
/*
* Copyright (c) 2016-2017 Lilian Tedone, 2017-2019 Zack Rauen
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
@import url(https://rauenzi.github.io/Nox/release/import.css);

View File

@ -1,3 +0,0 @@
//META{"name":"Radial_Status","description":"Changes status dot to a circle. Support Server: bit.ly/ZeresServer","author":"Zerebos","version":"2.0.0"}*//{}
@import url(https://rawgit.com/rauenzi/BetterDiscordAddons/master/Themes/RadialStatus/import/RadialStatus.css);

View File

@ -1,78 +0,0 @@
/*//META{"name":"Right-aligned Nicks","description":"Nicknames are right-aligned","author":"FichteFoll","version":"0.2.2"}*//
/**
* Nicks are right-aligned, where possible (i.e. compact layout).
* Space for timestamps is also reduced.
*
* Requires compact mode for obvious reasons.
*
* Nicknames that are too long for the associated space
* are collapsed with an ellipse.
* You can adjust the width of the username column
* with a variable in your user css
* or yell at the people until they pick a shorter nick.
*
*/
/* Variables for configuration. You can override these in your user css. */
:root {
/* ch as unit makes the most sense here,
* but doesn't work properly with calculating offset of the .accessory div */
--username-width: 7.3rem;
--timestamp-width: 3rem;
--header-offset: calc(0.3rem + 0.3em); /* first 0.3em from margin-left on timestamp */
/*--username-width: 13ch;
--timestamp-width: 9ch;*/ /* use `6ch` for 24h timestamps */
}
[class*=containerCompact-] { /* accessory */
padding-left: calc(70px - var(--timestamp-default-width) + var(--timestamp-width) + var(--username-width) );
position: relative;
}
[class*=containerCompact-] [class*=timestampCompactBase-] {
float: left;
top: 1.5ex;
width: var(--timestamp-width);
/*text-align: center;*/
}
/*.headerCompact-3wRt2W {*/
[class*=headerCompact-] {
position: absolute;
left: 0;
padding-bottom: 1px; /* for on-hover underline on border; user_style.css */
}
/*.containerCompact-3V0ioj .usernameWrapper-1S-G5O {*/
[class*=headerCompact-] > span {
display: inline-block;
text-align: right;
width: var(--username-width);
overflow: hidden;
text-overflow: ellipsis;
}
[class*=markup-][class*=isCompact-] {
margin-left: 0 !important;
padding-left: calc(var(--username-width) + var(--timestamp-width) + var(--header-offset)) !important;
text-indent: 0;
}
/*.containerCompact-3bB5aN {*/
[class*=containerCompact-][class*=content-] ~ [class*=containerCompact-] {
padding-left: calc(var(--username-width) + var(--timestamp-width) + var(--header-offset) + 0rem);
}
[class*=containerCompact-][class*=container-] [class*=isMentioned-] [class*=markup-] {
/*padding: 0;*/
/*margin: 0;*/
border-right: solid #FAA61A;
border-width: 0 2px;
}
/* Material theme sets this */
.container-1YxwTf h2 {
margin-left: 0;
}

View File

@ -1,31 +0,0 @@
/*//META{"name":"Compact-User-List","description":"Makes the user list look much like the server list.","author":"square","version":"1.0.1"}*//
.channel-members-wrap {
min-width: initial;
}
.channel-members-wrap .channel-members {
width: 78px;
padding: 0 0 18px 10px;
}
.channel-members h2 {
padding: 0;
margin: 9px 0 1px 0;
text-align: center;
word-wrap: break-word;
}
.member.member-status {
padding: 0 4px;
padding-top: 8px;
}
.member.member-status .avatar-small {
width: 50px;
height: 50px;
background-size: 50px 50px;
}
.member.member-status .member-inner {
display: none;
}
.channel-members::-webkit-scrollbar {
max-width: 10px;
}

View File

@ -1,38 +0,0 @@
/* //META{ "name": "Show-URLs", "description": "Shows a link's URL in bottom left corner much like a browser does.", "author": "square", "version": "1.0.3"} *//**/
.chat-3bRxxu .messagesWrapper-3lZDfY {
z-index: unset;
}
.messages-3amgkR a:after,
.topic-2QX7LI a:after
{
content: attr(href);
position: fixed;
bottom: 0;
left: 0;
background: white;
color: black;
font-size: 13.5px;
line-height: 16.5px;
font-weight: 500;
padding: 1px 3px 2px 3px;
max-width: calc(100% - 240px);
transition: opacity .44s linear;
pointer-events: none;
opacity: 0;
z-index: 42;
}
.messages-3amgkR a:hover:after,
.topic-2QX7LI a:hover:after
{
opacity: 1;
animation: fade .44s 10s forwards;
}
@keyframes fade {
to{ opacity: 0; }
}
/* not being restrictive on which <a/> tags are to be handled breaks scrollbars */

View File

@ -1,84 +0,0 @@
/* Don't embold greentext on hover (why in the fuck?) */
[class*=message-] #GreenText:hover {
font-weight: normal !important;
}
html, [class*=isCompact-]:not(code) {
font-family: Lato !important;
}
.emoji.jumboable {
margin-top: -0.3em !important;
width: 42px !important;
height: 42px !important;
vertical-align: baseline !important;
}
code {
font-family: Hack !important;
}
/* prevent follow-up timestamps from being hidden (currently hardcoded for dark mode) */
.theme-dark [class*=timestampVisibleOnHover-] {
color: hsla(0,0%,100%,.2);
}
/* Nox theme adjustments */
/* https://github.com/rauenzi/Nox */
:root {
--nox-level1: hsl(0, 0%, 17%);
}
[class*=attachButton-] {
width: 50px;
}
[class*=textArea-] {
padding: 16px 0 16px 50px !important;
}
[class*=usernameWrapper-] [class*=username-]:hover {
border-bottom: 1px solid;
}
[class*=containerCompact-][class*=container-][class*=isMentioned-] [class*=markup-],
.containerCompact-3V0ioj.container-1YxwTf .isMentioned-N-h9aa .markup-2BOw-j {
border-left-width: 2px;
}
/* TODO: check if the following can be removed */
[class*=containerCompactBounded-] {
padding: 0;
margin: 0 !important;
}
[class*=divider-] {
height: 30px;
}
[class*=divider-] > span {
background: hsl(0, 0%, 25%) !important;
}
[class*=divider-][class*=dividerRed-] > span {
background: hsl(358, 22%, 30%) !important;
}
[class*=channels-] [class*=scrollerWrap-] {
box-shadow: none;
}
/*[class*=container-] {*/
/*.da-container {*/
.container-1YxwTf {
background: none;
}
[class*="members-"] [class*="member-"] {
padding: 0 !important;
}
/* hide stupid buttons */
[class*="channelTextArea-"] button[tabindex="2"],
[class*="channelTextArea-"] button[tabindex="3"]{
display:none;
}

View File

@ -0,0 +1,138 @@
live_config_reload = true
[bell]
animation = "EaseOutExpo"
duration = 0
[colors]
draw_bold_text_with_bright_colors = true
[colors.bright]
black = "0x727072"
blue = "0xfc9867"
cyan = "0x78dce8"
green = "0xa9dc76"
magenta = "0xab9df2"
red = "0xff6188"
white = "0xfcfcfa"
yellow = "0xffd866"
[colors.dim]
black = "0x333333"
blue = "0x6699cc"
cyan = "0x66cccc"
green = "0x99cc99"
magenta = "0xcc99cc"
red = "0xf2777a"
white = "0xdddddd"
yellow = "0xffcc66"
[colors.normal]
black = "0x403e41"
blue = "0xfc9867"
cyan = "0x78dce8"
green = "0xa9dc76"
magenta = "0xab9df2"
red = "0xff6188"
white = "0xfcfcfa"
yellow = "0xffd866"
[colors.primary]
background = "0x303031"
foreground = "0xfcfcfa"
[cursor]
style = "Beam"
[env]
TERM = "xterm-256color"
[font]
size = 13.0
[font.bold]
family = "Hack Nerd Font Mono"
style = "Bold"
[font.glyph_offset]
x = 0
y = 0
[font.italic]
family = "Hack Nerd Font Mono"
style = "Italic"
[font.normal]
family = "Hack Nerd Font Mono"
style = "Regular"
[font.offset]
x = 0
y = 1
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Alt"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Alt"
[[keyboard.bindings]]
action = "PasteSelection"
key = "Insert"
mods = "Shift"
[[keyboard.bindings]]
action = "ResetFontSize"
key = "Key0"
mods = "Control"
[[keyboard.bindings]]
action = "IncreaseFontSize"
key = "K"
mods = "Alt|Shift"
[[keyboard.bindings]]
action = "DecreaseFontSize"
key = "J"
mods = "Alt|Shift"
[[keyboard.bindings]]
action = "ScrollLineDown"
key = "J"
mods = "Alt"
[[keyboard.bindings]]
action = "ScrollLineUp"
key = "K"
mods = "Alt"
[[keyboard.bindings]]
action = "ScrollPageDown"
key = "D"
mods = "Alt"
[[keyboard.bindings]]
action = "ScrollPageUp"
key = "U"
mods = "Alt"
[[mouse.bindings]]
action = "PasteSelection"
mouse = "Middle"
[selection]
semantic_escape_chars = ",│`|:\"' ()[]{}<>"

View File

@ -1,353 +0,0 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty it self.
env:
# TERM env customization.
#
# If this property is not set, alacritty will set it to xterm-256color.
#
# Note that some xterm terminfo databases don't declare support for italics.
# You can verify this by checking for the presence of `smso` and `sitm` in
# `infocmp xterm-256color`.
TERM: xterm-256color
# xterm-256color
# Window dimensions in character columns and lines
# Falls back to size specified by window manager if set to 0x0.
# (changes require restart)
window.dimensions:
columns: 80
lines: 24
# Adds this many blank pixels of padding around the window
# Units are physical pixels; this is not DPI aware.
# (change requires restart)
window.padding:
x: 2
y: 2
# Display tabs using this many cells (changes require restart)
tabspaces: 4
# When true, bold text is drawn using the bright variant of colors.
draw_bold_text_with_bright_colors: true
# Font configuration (changes require restart)
#
# Important font attributes like antialiasing, subpixel aa, and hinting can be
# controlled through fontconfig. Specifically, the following attributes should
# have an effect:
#
# * hintstyle
# * antialias
# * lcdfilter
# * rgba
#
# For instance, if you wish to disable subpixel antialiasing, you might set the
# rgba property to "none". If you wish to completely disable antialiasing, you
# can set antialias to false.
#
# Please see these resources for more information on how to use fontconfig
#
# * https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration
# * file:///usr/share/doc/fontconfig/fontconfig-user.html
font:
# The normal (roman) font face to use.
normal:
family: Hack # should be "Menlo" or something on macOS.
# Style can be specified to pick a specific face.
# style: Regular
# The bold font face
bold:
family: Hack # should be "Menlo" or something on macOS.
# Style can be specified to pick a specific face.
style: Regular
# The italic font face
italic:
family: Hack # should be "Menlo" or something on macOS.
# Style can be specified to pick a specific face.
style: Regular
# Point size of the font
size: 11.0
# Offset is the extra space around each character. offset.y can be thought of
# as modifying the linespacing, and offset.x as modifying the letter spacing.
offset:
x: 0
y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increase the x offset to move the glyph to
# the right, increase the y offset to move the glyph upward.
glyph_offset:
x: 0
y: 0
# OS X only: use thin stroke font rendering. Thin strokes are suitable
# for retina displays, but for non-retina you probably want this set to
# false.
use_thin_strokes: true
# Should display the render timer
render_timer: false
# Colors (Tomorrow Night Bright)
colors:
# Default colors
primary:
background: '0x313132'
foreground: '0xc5c8c6'
# Colors the cursor will use if `custom_cursor_colors` is true
#cursor:
# text: '0x000000'
# cursor: '0x20b57c'
# Normal colors
normal:
black: '0x1d1f21'
red: '0xcc4444'
green: '0x95bd41'
yellow: '0xe1b153'
blue: '0x43a2f3'
magenta: '0xb286be'
cyan: '0x50c0d8'
white: '0xd6d6d6'
# Bright colors
bright:
black: '0x969896'
red: '0xd63333'
green: '0x8dc910'
yellow: '0xf5af27'
blue: '0x43a9ff'
magenta: '0xbc79d0'
cyan: '0x47d3ef'
white: '0xffffff'
# Dim colors (Optional)
dim:
black: '0x333333'
red: '0xf2777a'
green: '0x99cc99'
yellow: '0xffcc66'
blue: '0x6699cc'
magenta: '0xcc99cc'
cyan: '0x66cccc'
white: '0xdddddd'
# Visual Bell
#
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
# rung, the terminal background will be set to white and transition back to the
# default background color. You can control the rate of this transition by
# setting the `duration` property (represented in milliseconds). You can also
# configure the transition function by setting the `animation` property.
#
# Possible values for `animation`
# `Ease`
# `EaseOut`
# `EaseOutSine`
# `EaseOutQuad`
# `EaseOutCubic`
# `EaseOutQuart`
# `EaseOutQuint`
# `EaseOutExpo`
# `EaseOutCirc`
# `Linear`
#
# To completely disable the visual bell, set its duration to 0.
#
visual_bell:
animation: EaseOutExpo
duration: 0
# Background opacity
background_opacity: 1.0
# Mouse bindings
#
# Currently doesn't support modifiers. Both the `mouse` and `action` fields must
# be specified.
#
# Values for `mouse`:
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# Values for `action`:
# - Paste
# - PasteSelection
# - Copy (TODO)
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
mouse:
double_click: { threshold: 300 }
triple_click: { threshold: 300 }
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
mouse.hide_when_typing: false
# Live config reload (changes require restart)
live_config_reload: true
# Shell
#
# You can set shell.program to the path of your favorite shell, e.g. /bin/fish.
# Entries in shell.args are passed unmodified as arguments to the shell.
# shell:
# program: /bin/bash
# args:
# - --login
# Key bindings
#
# Each binding is defined as an object with some properties. Most of the
# properties are optional. All of the alphabetical keys should have a letter for
# the `key` value such as `V`. Function keys are probably what you would expect
# as well (F1, F2, ..). The number keys above the main keyboard are encoded as
# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`,
# etc. These all match the glutin::VirtualKeyCode variants.
#
# Possible values for `mods`
# `Command`, `Super` refer to the super/command/windows key
# `Control` for the control key
# `Shift` for the Shift key
# `Alt` and `Option` refer to alt/option
#
# mods may be combined with a `|`. For example, requiring control and shift
# looks like:
#
# mods: Control|Shift
#
# The parser is currently quite sensitive to whitespace and capitalization -
# capitalization must match exactly, and piped items must not have whitespace
# around them.
#
# Either an `action`, `chars`, or `command` field must be present.
# `action` must be one of `Paste`, `PasteSelection`, `Copy`, or `Quit`.
# `chars` writes the specified string every time that binding is activated.
# These should generally be escape sequences, but they can be configured to
# send arbitrary strings of bytes.
# `command` must be a map containing a `program` string, and `args` array of
# strings. For example:
# - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } }
#
# Want to add a binding (e.g. "PageUp") but are unsure what the X sequence
# (e.g. "\x1b[5~") is? Open another terminal (like xterm) without tmux,
# then run `showkey -a` to get the sequence associated to a key combination.
key_bindings:
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Q, mods: Command, action: Quit }
- { key: W, mods: Command, action: Quit }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Subtract, mods: Control, action: DecreaseFontSize }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
- { key: F12, mods: Super, chars: "\x1b[24;3~" }

1
.config/base16-shell Submodule

@ -0,0 +1 @@
Subproject commit cd19a7bc5c57e5dccc95f1493a2a0ff3b15f4499

View File

@ -30,22 +30,22 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7B2657142D-4909-4A65-8E2C-B12AB77827F5%7D\ScriptName=Gradient
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7B2657142D-4909-4A65-8E2C-B12AB77827F5%7D\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\BlendMode=Normal
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Keys=space, quote, bspace, dot, rwin, rmenu, prev, tab, num0, num1, num2, num3, num4, num5, play, num6, colon, num7, num8, ralt, num9, esc, numslash, slash, prtscn, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, bslash_iso, home, rctrl, numplus, grave, b, pause, c, stop, e, f, g, f1, h, f2, i, g10, f3, rbrace, j, g11, f4, k, g12, f5, l, g13, f6, m, g14, f7, n, g15, f8, o, g16, f9, p, g17, q, g18, r, lwin, numminus, minus, t, u, v, x, y, z, end, rshift, ins, comma, numdot, lctrl, g1, g2, g3, g4, g5, g6, g7, g8, g9, lbrace, lalt, numstar, lshift, numlock, f10, f11, f12, pgdn, hash, del, pgup, caps, equal, numenter, next, enter, scroll, bslash, front, wheel, dpi, thumb, back
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Keys=lshift, 3, 9, ins, n, rmenu, h, numenter, g10, next, f9, prtscn, x, numplus, rbrace, w, num5, num3, g14, 7, l, g11, f10, prev, f3, num1, numdot, pgdn, j, f12, rshift, grave, f8, num0, end, minus, stop, home, num2, a, f11, g7, m, num7, 0, numlock, o, lctrl, space, f7, scroll, e, lwin, f, g2, 5, lalt, num8, f5, y, f4, enter, v, play, g16, p, num4, f1, g13, equal, 1, g12, f6, pause, del, g3, 8, u, g15, numminus, i, lbrace, dot, caps, num9, esc, g8, bspace, g18, 6, d, pgup, numslash, tab, hash, g4, z, left, g, ralt, r, rwin, comma, g6, g17, 4, rctrl, g1, c, numstar, q, 2, b, num6, g5, quote, bslash_iso, t, down, up, g9, k, colon, f2, s, right, slash, bslash, front, wheel, dpi, thumb, back
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Name=Wave
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Opacity=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\angle=120
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\angle=114
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\color=0:ffff0000 17:ffffff00 33:ff00ff00 50:ff00ffff 67:ff0000ff 83:ffff00ff 100:ffff0000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\delay=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\duration=3
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\duration=3.0999999999999996
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kpdelay=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kpmode=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kpmodestop=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kprelease=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kprepeat=3
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kprepeat=3.1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kpstop=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\kptrigger=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\length=100.000000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\repeat=3
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\repeat=3.1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\stop=-1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\symmetric=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Animations\%7BB60A7D3A-AAC6-4676-8471-D602455A1134%7D\Parameters\trigger=1
@ -195,7 +195,7 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Keys\y=#ffffff
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\Keys\z=#ffffff
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Modified=3f1f6fe9
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Modified=6f249069
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Name=Rainbow
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\0\Performance\DPI\0=@Point(400 400)
@ -253,7 +253,7 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Binding\WinLock=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\GUID={631583C1-1C96-4743-A7B9-F38B8098A93A}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\HwModified=253b1e86
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\List={FAF74CDC-0A8B-4905-85F5-AFA16C4CACF0}, {0E7259A0-CC16-4FAC-9518-1F6E292CD402}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\List={2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC}, {0E7259A0-CC16-4FAC-9518-1F6E292CD402}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B0E7259A0-CC16-4FAC-9518-1F6E292CD402%7D\BlendMode=Normal
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B0E7259A0-CC16-4FAC-9518-1F6E292CD402%7D\Keys=2, rmenu, g6, m2, num8, k, f7, s, 9, lshift, g3, end, grave, 1, colon, light, m, f2, f5, 0, g9, f3, y, lctrl, slash, g14, rbrace, num0, g11, stop, lock, rctrl, f, hash, g16, g2, bspace, g5, g18, g7, equal, g12, ins, num7, 5, numslash, esc, 6, m3, f6, f4, num4, caps, right, t, left, g13, d, num1, c, f8, g4, g1, lalt, mute, j, o, num6, up, r, dot, scroll, minus, numstar, numdot, comma, next, l, numplus, del, n, 4, num2, 7, lwin, f11, b, down, numlock, g, quote, f10, pgup, 3, h, x, z, ralt, enter, g17, num9, pause, rwin, lbrace, 8, numenter, v, q, home, g15, i, tab, u, g8, f9, numminus, p, g10, pgdn, prtscn, f1, mr, e, bslash_iso, num3, rshift, play, num5, space, m1, w, prev, f12, a
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B0E7259A0-CC16-4FAC-9518-1F6E292CD402%7D\Name=make it rain
@ -274,31 +274,31 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B0E7259A0-CC16-4FAC-9518-1F6E292CD402%7D\ScriptGuid={5D6695AF-0496-41E2-BEE7-F7D0ABAA49E9}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B0E7259A0-CC16-4FAC-9518-1F6E292CD402%7D\ScriptName=Raindrop
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B0E7259A0-CC16-4FAC-9518-1F6E292CD402%7D\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\BlendMode=Normal
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Keys=2, rmenu, g6, m2, num8, k, f7, s, 9, lshift, g3, end, grave, 1, colon, light, m, f2, f5, 0, g9, f3, y, lctrl, slash, g14, rbrace, num0, g11, stop, lock, rctrl, f, hash, g16, g2, bspace, g5, g18, g7, equal, g12, ins, num7, 5, numslash, esc, 6, m3, f6, f4, num4, caps, right, t, left, g13, d, num1, c, f8, g4, g1, lalt, mute, j, o, num6, up, r, dot, scroll, minus, numstar, numdot, comma, next, l, numplus, del, n, 4, num2, 7, lwin, f11, b, down, numlock, g, quote, f10, pgup, 3, h, x, z, ralt, enter, g17, num9, pause, rwin, lbrace, 8, numenter, v, q, home, g15, i, tab, u, g8, f9, numminus, p, g10, pgdn, prtscn, f1, mr, e, bslash_iso, num3, rshift, play, num5, space, m1, w, prev, f12, a
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Name=Type lighting
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Opacity=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\color=0:ffff0000 100:00ff0000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\delay=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\duration=0.6
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kpdelay=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kpmode=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kpmodestop=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kprelease=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kprepeat=0.6
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kpstop=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\kptrigger=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\length=20
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\randomize=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\repeat=0.6
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\stop=-1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\symmetric=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\trigger=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\x_offset=0.000000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\Parameters\y_offset=0.000000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\ScriptGuid={097D69F0-70B2-48B8-AFE2-25A1CDB02C9D}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\ScriptName=Ripple
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7BFAF74CDC-0A8B-4905-85F5-AFA16C4CACF0%7D\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\BlendMode=Normal
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Keys=2, rmenu, g6, m2, num8, k, f7, s, 9, lshift, g3, end, grave, 1, colon, light, m, f2, f5, 0, g9, f3, y, lctrl, slash, g14, rbrace, num0, g11, stop, lock, rctrl, f, hash, g16, g2, bspace, g5, g18, g7, equal, g12, ins, num7, 5, numslash, esc, 6, m3, f6, f4, num4, caps, right, t, left, g13, d, num1, c, f8, g4, g1, lalt, mute, j, o, num6, up, r, dot, scroll, minus, numstar, numdot, comma, next, l, numplus, del, n, 4, num2, 7, lwin, f11, b, down, numlock, g, quote, f10, pgup, 3, h, x, z, ralt, enter, g17, num9, pause, rwin, lbrace, 8, numenter, v, q, home, g15, i, tab, u, g8, f9, numminus, p, g10, pgdn, prtscn, f1, mr, e, bslash_iso, num3, rshift, play, num5, space, m1, w, prev, f12, a
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Name=Type lighting
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Opacity=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\color=0:ffff0000 100:00ff0000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\delay=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\duration=0.6
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kpdelay=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kpmode=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kpmodestop=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kprelease=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kprepeat=0.6
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kpstop=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\kptrigger=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\length=20
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\randomize=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\repeat=0.6
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\stop=-1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\symmetric=1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\trigger=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\x_offset=0.000000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\Parameters\y_offset=0.000000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\ScriptGuid={097D69F0-70B2-48B8-AFE2-25A1CDB02C9D}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\ScriptName=Ripple
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Animations\%7B2C6C4B19-8FBD-4474-ACF3-EC85B164C1CC%7D\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Brightness=0
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\KeyMap=K95 DE
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Keys\0=#1694c1
@ -438,7 +438,7 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Keys\y=#1694c1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\Keys\z=#1694c1
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Modified=1f2854b5
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Modified=4edf52c7
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Name=custom
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\1\Performance\DPI\0=@Point(400 400)
@ -686,7 +686,7 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Lighting\Keys\y=#aa00ff
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Lighting\Keys\z=#aa00ff
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Modified=6a9b496a
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Modified=ed4280a
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Name=Trippy
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\2\Performance\DPI\0=@Point(400 400)
@ -912,7 +912,7 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Lighting\Keys\y=#ff0000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Lighting\Keys\z=#ff0000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Modified=693ce47b
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Modified=2ebed9eb
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Name=Breathing
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Performance\DPI\0=@Point(400 400)
@ -965,10 +965,10 @@
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Performance\Indicators\7\RGB2=#ff000000
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Performance\Indicators\DPI=false
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\3\Performance\LiftHeight=3
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\CurrentMode={631583C1-1C96-4743-A7B9-F38B8098A93A}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\CurrentMode={11C11AE3-3195-4DFC-B8AC-2FEA703414E5}
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\HwModified=66cb49a5
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\ModeCount=4
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\Modified=5b71ee05
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\Modified=6146c24c
0C01700DAEB8910055BB7829F5001946\%7BBA7FC152-2D51-4C26-A7A6-A036CC93D924%7D\Name=ckb Demo
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Binding\KeyMap=K95 DE
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Binding\UseRealNames=true
@ -1143,7 +1143,7 @@
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Lighting\Keys\yen=#000000
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Lighting\Keys\z=#0000ff
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Modified=e854a5e
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Modified=21d394e4
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Name=dank
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\0\Performance\DPI\0=@Point(400 400)
@ -1369,7 +1369,7 @@
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Lighting\Keys\yen=#000000
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Lighting\Keys\z=#00b400
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Modified=50fa778
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Modified=a148411
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Name=K95 RGB Default
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\1\Performance\DPI\0=@Point(400 400)
@ -1595,7 +1595,7 @@
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Lighting\Keys\yen=#000000
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Lighting\Keys\z=#000000
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Lighting\UseRealNames=true
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Modified=3d22d589
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Modified=625ad7d7
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Name=red blink
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Performance\AngleSnap=false
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\2\Performance\DPI\0=@Point(400 400)
@ -1651,7 +1651,7 @@
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\CurrentMode={8458F5C8-C91A-416A-BF9F-A823E8AA46D2}
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\HwModified=1
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\ModeCount=3
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\Modified=71a177a1
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\Modified=4498ee64
0C01700DAEB8910055BB7829F5001946\%7BD57F5E21-B80D-4DAC-1D81-428E5DB7BC2C%7D\Name=Default
[Popups]

300
.config/dunst/dunstrc Normal file
View File

@ -0,0 +1,300 @@
[global]
font = Cantarell 10
# Allow a small subset of html markup:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
# If markup is not allowed, those tags will be stripped out of the
# message.
allow_markup = yes
# 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
# Markup is allowed
format = "%s %p\n%b"
# Sort messages by urgency.
sort = yes
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# The frequency with wich text that is longer than the notification
# window allows bounces back and forth.
# This option conflicts with "word_wrap".
# Set to 0 to disable.
bounce_freq = 5
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = -1
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = no
# Ignore newlines '\n' in notifications.
ignore_newline = no
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectevly.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "0x4-25+25"
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing windowmanager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 15
# 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.
# default 120
idle_threshold = 0
# Which monitor should the notifications be displayed on.
monitor = 0
# 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 windowmanager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern windowmanagers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = mouse
# 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
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
# The height of a single line. If the height is smaller than the
# font height, it will get raised to the font height.
# This adds empty space above and under the text.
line_height = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 1
# Padding between text and separator.
# padding = 8
padding = 8
# Horizontal padding.
horizontal_padding = 10
# 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 = #454947
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = palemoon
# Align icons left/right/off
icon_position = left
# Paths to default icons.
icon_folders = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/
[frame]
width = 1
color = "#16A085"
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = mod1+space
# Close all notifications.
# close_all = ctrl+shift+space
close_all = ctrl+mod1+space
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1".
history = ctrl+mod4+h
# Context menu.
context = ctrl+mod1+c
frame_color = "#E5E9F0"
separator_color = "#E5E9F0"
[base16_low]
msg_urgency = low
background = "#3B4252"
foreground = "#4C566A"
[base16_normal]
msg_urgency = normal
background = "#434C5E"
foreground = "#E5E9F0"
[base16_critical]
msg_urgency = critical
background = "#88C0D0"
foreground = "#ECEFF4"
# 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", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# 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: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[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
#
#[Claws Mail]
# appname = claws-mail
# category = email.arrived
# urgency = normal
# background = "#2F899E"
# foreground = "#FFA247"
#
#[mute.sh]
# appname = mute
# category = mute.sound
# script = mute.sh
#
#[JDownloader]
# appname = JDownloader
# category = JD
# background = "#FFA247"
# foreground = "#FFFFFF"
#
#[newsbeuter]
# summary = *Feeds*
# background = "#A8EB41"
# foreground = "#FFFFFF"
#
[irc]
appname = weechat
timeout = 0
background = "#0033bb"
foreground = "#dddddd"
#
[weechat hl]
appname = weechat
category = weechat.HL
background = "#FF5C47"
foreground = "#FFFFFF"
#
[weechat pn]
appname = weechat
category = weechat.PM
background = "#D53B84"
foreground = "#FFFFFF"
#
#[CMUS]
# appname = CMUS
# category = cmus
# background = "#6C4AB7"
# foreground = "#FFE756"
#
#
# background = "#30AB70"
# foreground = "#F67245"
#
# vim: ft=cfg

61
.config/htop/htoprc Normal file
View File

@ -0,0 +1,61 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.2.1
config_reader_min_version=3
fields=48 38 39 46 47 111 1
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=1
highlight_deleted_exe=1
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
header_margin=1
screen_tabs=0
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=1
show_cpu_temperature=1
degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=5
enable_mouse=1
delay=15
hide_function_bar=0
header_layout=two_50_50
column_meters_0=AllCPUs2 Memory CPU Tasks
column_meter_modes_0=1 1 2 2
column_meters_1=CPU Memory Blank LoadAverage Uptime
column_meter_modes_1=3 3 2 2 2
tree_view=0
sort_key=46
tree_sort_key=46
sort_direction=-1
tree_sort_direction=-1
tree_view_always_by_pid=0
all_branches_collapsed=0
screen:Main=USER M_VIRT M_RESIDENT PERCENT_CPU PERCENT_MEM IO_RATE Command
.sort_key=PERCENT_CPU
.tree_sort_key=PERCENT_CPU
.tree_view=0
.tree_view_always_by_pid=0
.sort_direction=-1
.tree_sort_direction=-1
.all_branches_collapsed=0
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
.sort_key=IO_RATE
.tree_sort_key=PID
.tree_view=0
.tree_view_always_by_pid=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

View File

@ -4,17 +4,15 @@
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
set $mod Mod4
exec ~/bin/autostart
# custom
bindsym $mod+Shift+Return exec cool-retro-term;
#for_window [class="cool-retro-term"] fullscreen enable
#bindsym $mod+Ctrl+o exec keepass --auto-type
bindsym Ctrl+Shift+4 exec /home/kageru/bin/pyshare
bindsym Ctrl+Shift+8 exec /home/kageru/bin/pyshare -e 1
bindsym $mod+Shift+u exec /home/kageru/bin/pyshare -m text
bindsym Ctrl+Shift+4 exec /home/kageru/bin/ppsh
# bindsym Ctrl+Shift+8 exec /home/kageru/bin/pyshare -e 1
# bindsym $mod+Shift+u exec /home/kageru/bin/pyshare -m text
bindsym $mod+x exec "rofi -show window -modi window,run,drun"
# -font Hack\ 20 -lines 8 -location 2 -width 100 -no-fixed-num-lines -fuzzy -levenshtein-sort
# -color-normal "argb:ff222222, argb:cccccc, argb:333333, argb:663333, argb:ffffff" -color-window "#222222, #cccccc, #333333, #663333, #ffffff" -color-urgent "#222222, #cccccc, #333333, #663333, #ffffff" -color-active "#222222, #cccccc, #333333, #663333, #ffffff"
@ -34,7 +32,7 @@ bindsym XF86AudioNext exec mpc next
bind 191 exec amixer -D pulse sset Master 5%+; exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" -t 300
bind 192 exec amixer -D pulse sset Master 5%-; exec --no-startup-id notify-send "`amixer -c 1 -M -D pulse get Master| grep -o -E '[[:digit:]]+%' | uniq`" -t 300
bindsym --whole-window button10 exec mpc toggle
bindsym --whole-window button15 exec mpc toggle
bindsym --whole-window button11 exec mpc next
bindsym XF86MonBrightnessUp exec xbacklight -inc 10; exec notify-send $(xbacklight -get) -t 300
bindsym XF86MonBrightnessDown exec xbacklight -dec 10; exec notify-send $(xbacklight -get) -t 300
@ -50,8 +48,8 @@ bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%-; exec --no-sta
# workspace_layout tabbed <stacking|tabbed>
# Configure border style <normal|1pixel|pixel xx|none|pixel>
new_window pixel 1
new_float pixel 1
new_window pixel 3
new_float pixel 3
#new_window pixel 1
#new_float normal
@ -60,52 +58,48 @@ hide_edge_borders none
# change borders
bindsym $mod+u border none
bindsym $mod+y border pixel 1
bindsym $mod+n border normal
bindsym $mod+y border pixel 3
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font xft:Noto Sans 10
font xft:Hack 10
# Use Mouse+$mod to drag floating windows
floating_modifier $mod
# start a terminal
#exec --no-startup-id urxvtd
bindsym $mod+Return exec st
bindsym $mod+Return exec alacritty
# kill focused window
bindsym $mod+Shift+q kill
bindsym $mod+q kill
# start program launcher
bindsym $mod+d exec --no-startup-id rofi -show run
bindsym $mod+d exec --no-startup-id dmenu_run
################################################################################################
## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ##
################################################################################################
#exec --no-startup-id volumeicon
#bindsym $mod+Ctrl+m exec terminal -e 'alsamixer'
exec --no-startup-id pulseaudio
exec --no-startup-id pa-applet
bindsym $mod+Ctrl+m exec pavucontrol
################################################################################################
# Start Applications
bindsym $mod+Ctrl+b exec terminal -e 'bmenu'
bindsym $mod+F2 exec chromium
bindsym $mod+F2 exec qutebrowser
#bindsym $mod+F2 exec firefox-nightly
#bindsym $mod+F3 exec cool-retro-term -e ranger
bindsym $mod+F3 exec st -e ranger
bindsym $mod+Shift+F3 exec gksu pcmanfm
bindsym $mod+F5 exec st -e 'ncmpcpp'
bindsym $mod+t exec --no-startup-id pkill compton
bindsym $mod+Ctrl+t exec --no-startup-id compton -b
# these workarounds are necessary because I use base16 in zsh to set my terminal colors
#bindsym $mod+F3 exec st -e zsh -ci ranger
#bindsym $mod+F5 exec st -e zsh -ci ncmpcpp
bindsym $mod+F3 exec alacritty -e ranger
bindsym $mod+F5 exec st -e ncmpcpp
bindsym $mod+t exec --no-startup-id pkill picom
bindsym $mod+Ctrl+t exec --no-startup-id picom -b
bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'"
bindsym Print exec --no-startup-id i3-scrot
bindsym $mod+Print --release exec --no-startup-id i3-scrot -w
bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s
#bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf
bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
# focus_follows_mouse no
@ -142,7 +136,7 @@ bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_
# split orientation
bindsym $mod+g split h
bindsym $mod+v split v
bindsym $mod+q split toggle
# bindsym $mod+q split toggle
# toggle fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
@ -201,15 +195,10 @@ set $ws19 十九
# default screens
#workspace $ws1 output DP-0
workspace $ws1 output DVI-D-0
workspace $ws11 output DVI-D-0
workspace $ws2 output DP-0
workspace $ws12 output DP-0
workspace $ws3 output DVI-D-0
workspace $ws13 output DVI-D-0
workspace $ws4 output DVI-D-0
workspace $ws18 output HDMI-0
workspace $ws19 output HDMI-0
#workspace $ws1 output HDMI-1
workspace $ws2 output DisplayPort-0
workspace $ws3 output HDMI-A-0
workspace $ws4 output DisplayPort-0
# switch to workspace
bindsym $mod+1 workspace $ws1
@ -273,7 +262,6 @@ bindsym $mod+Shift+KP_8 move container to workspace $ws18; workspace $ws18
bindsym $mod+Shift+KP_9 move container to workspace $ws19; workspace $ws19
exec --no-startup-id i3-msg 'workspace $ws4; layout stacking; exec keepassxc; exec thunderbird; exec hexchat'
exec_always ~/bin/restart_polybar
# Open applications on specific workspaces
# assign [class="mpv"] $ws5
@ -285,12 +273,17 @@ assign [class=".*discord.*"] $ws1
for_window [class="Pavucontrol"] floating enable
#for_window [class="(?i)virtualbox"] floating enable border normal
for_window [class="mpv"] floating enable
for_window [class="tModLoader.bin.x86_64"] floating enable
for_window [class="mono-sgen"] floating enable
for_window [class="feh"] floating enable
for_window [workspace=$ws12] floating enable
for_window [workspace=$ws8] floating enable
# switch to workspace with urgent window automatically
for_window [urgent=latest] none
#no_focus [class="Firefox"]
#no_focus [class="Nightly"]
no_focus [class="jetbrains-.*"]
no_focus [class=".*discord.*"]
# reload the configuration file
bindsym $mod+Shift+c reload
@ -345,11 +338,12 @@ mode "resize" {
# Lock screen
bindsym $mod+9 exec --no-startup-id i3lock -i ~/Pictures/bg.png -ut
bindsym $mod+9 exec --no-startup-id i3lock -i ~/Pictures/bg.png -t
# Autostart applications
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec --no-startup-id compton -b
exec ~/bin/autostart
exec --no-startup-id picom -b
exec_always ~/bin/restart_polybar
# Color palette used for the terminal ( ~/.extend.Xresources file )
# Colors are gathered based on the documentation:
@ -397,11 +391,13 @@ set $i3_color4 #d8dee9
set $i3_color5 #e5e9f0
set $i3_color6 #eceff4
set $i3_color7 #8fbcbb
#set $i3_color8 #88c0d0
#set $i3_color9 #81a1c1
#set $i3_color10 #5e81ac
set $i3_color8 #aaaaaa
set $i3_color9 #999999
#set $i3_color8 #00ff66
#set $i3_color9 #22dd88
# split direction
set $i3_color8 #aa7934
# border
set $i3_color9 #d89a52
set $i3_color10 #666666
set $i3_color11 #bf616a
set $i3_color12 #d08770
@ -454,8 +450,8 @@ client.background $i3_background
#############################
# Set inner/outer gaps
gaps inner 10
gaps outer 0
gaps inner 15
gaps outer -5
# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size.
# gaps inner|outer current|all set|plus|minus <px>
@ -463,7 +459,7 @@ gaps outer 0
# gaps outer all plus 5
# Smart gaps (gaps used if only more than one container on the workspace)
#smart_gaps on
#smart_gaps yes
# Smart borders (draw borders around container only if it is not the only container on this workspace)
# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0)
@ -482,8 +478,8 @@ mode "$mode_gaps" {
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym k gaps inner current plus 5
bindsym j gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
@ -494,8 +490,8 @@ mode "$mode_gaps_inner" {
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym k gaps outer current plus 5
bindsym j gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5

4
.config/mako/config Normal file
View File

@ -0,0 +1,4 @@
background-color=#000000bb
height=200
default-timeout= 3000
border-size=1

View File

@ -9,18 +9,19 @@ music_directory "/mnt/calliope/Music"
audio_output {
type "pulse"
name "MPulseD"
# type "alsa"
# name "iec958:CARD=S20,DEV=0"
# device "hw:2,0"
# device "iec958:CARD=S20,DEV=0"
# device "sysdefault:CARD=S20"
# device "plug:default"
format "96000:32:2"
format "48000:32:2"
auto_resample "no"
always_on "no"
mixer_type "software"
}
#audio_output {
#type "alsa"
#name "minimalist master race"
#device "plug:default"
#mixer_type "software"
#}
audio_output {
type "fifo"
name "my_fifo"
@ -29,16 +30,16 @@ audio_output {
}
replaygain "album"
audio_output {
type "httpd"
name "kageremusic"
encoder "vorbis"
port "8080"
quality "7.0"
format "44100:16:2"
tags "yes"
always_on "yes"
}
#audio_output {
# type "httpd"
# name "kageremusic"
# encoder "vorbis"
# port "8080"
# quality "7.0"
# format "44100:16:2"
# tags "yes"
# always_on "yes"
#}
#bind_to_address "0.0.0.0"
#bind_to_address "localhost"

View File

@ -4,17 +4,16 @@ Shift+RIGHT frame-step
Shift+LEFT frame-back-step
Shift+UP add volume 10
Shift+DOWN add volume -10
#j vf toggle deband
d vf toggle deband
ctrl+d vf toggle yadif
a cycle audio
LEFT osd-bar seek -5 relative+exact
RIGHT osd-bar seek 5 relative+exact
# This displays statistics of the currently played file
i show_text "${osd-ass-cc/0}{\\fs11}{\\fnSource Sans Pro}{\\bord1}{\\3c&H262626&}{\\alpha&H11}\\N{\\b1}File:{\\b0}\\h\\h${osd-ass-cc/1}${filename}${osd-ass-cc/0}\\N\\h\\h\\h\\h\\h{\\b1}${?media-title:Title:\\h\\h}{\\b0}${osd-ass-cc/1}${?media-title:${media-title}}${osd-ass-cc/0}${?chapter:\\N\\h\\h\\h\\h\\h}{\\b1}${?chapter:Chapter:\\h\\h}{\\b0}${osd-ass-cc/1}${?chapter:${chapter}}${osd-ass-cc/0}${?cache-used:\\N\\h\\h\\h\\h\\h}{\\b1}${?cache-used:Cache:\\h\\h}{\\b0}${?cache-used:${cache-used}\\h\\h+${demuxer-cache-duration} sec}\\N\\N{\\b1}Video:{\\b0}\\h\\h${video-codec}\\N\\h\\h\\h\\h\\h{\\b1}A-V:{\\b0}\\h\\h${avsync}\\N\\h\\h\\h\\h\\h{\\b1}Dropped:{\\b0}\\h\\h${drop-frame-count}\\h\\h\\h\\h\\h{\\b1}VO:{\\b0}\\h\\h${vo-drop-frame-count}\\N\\h\\h\\h\\h\\h{\\b1}FPS:{\\b0}\\h\\h${fps} (specified)\\h\\h${estimated-vf-fps} (estimated)\\N\\h\\h\\h\\h\\h{\\b1}Native Resolution:{\\b0}\\h\\h${video-params/w} x ${video-params/h}\\N\\h\\h\\h\\h\\h{\\b1}Window Scale:{\\b0}\\h\\h${window-scale}\\N\\h\\h\\h\\h\\h{\\b1}Aspect Ratio:{\\b0}\\h\\h${video-params/aspect}\\N\\h\\h\\h\\h\\h{\\b1}Pixel format:{\\b0}\\h\\h${video-params/pixelformat}\\N\\h\\h\\h\\h\\h{\\b1}Colormatrix:{\\b0}\\h\\h${video-params/colormatrix}\\N\\h\\h\\h\\h\\h{\\b1}Primaries:{\\b0}\\h\\h${video-params/primaries}\\N\\h\\h\\h\\h\\h{\\b1}Levels:{\\b0}\\h\\h${video-params/colorlevels}${?packet-video-bitrate:${!=packet-video-bitrate==0:\\N\\h\\h\\h\\h\\h}}{\\b1}${?packet-video-bitrate:${!=packet-video-bitrate==0:Bitrate:\\h\\h}}{\\b0}${?packet-video-bitrate:${!=packet-video-bitrate==0:${packet-video-bitrate} kbps}}\\N\\N{\\b1}Audio:{\\b0}\\h\\h${audio-codec}\\N\\h\\h\\h\\h\\h{\\b1}Sample Rate:{\\b0}\\h\\h${audio-params/samplerate}\\N\\h\\h\\h\\h\\h{\\b1}Channels:{\\b0}\\h\\h${audio-params/channel-count}${?packet-audio-bitrate:${!=packet-audio-bitrate==0:\\N\\h\\h\\h\\h\\h}}{\\b1}${?packet-audio-bitrate:${!=packet-audio-bitrate==0:Bitrate:\\h\\h}}{\\b0}${?packet-audio-bitrate:${!=packet-audio-bitrate==0:${packet-audio-bitrate} kbps}}" 8000
# i show_text "${osd-ass-cc/0}{\\fs11}{\\fnSource Sans Pro}{\\bord1}{\\3c&H262626&}{\\alpha&H11}\\N{\\b1}File:{\\b0}\\h\\h${osd-ass-cc/1}${filename}${osd-ass-cc/0}\\N\\h\\h\\h\\h\\h{\\b1}${?media-title:Title:\\h\\h}{\\b0}${osd-ass-cc/1}${?media-title:${media-title}}${osd-ass-cc/0}${?chapter:\\N\\h\\h\\h\\h\\h}{\\b1}${?chapter:Chapter:\\h\\h}{\\b0}${osd-ass-cc/1}${?chapter:${chapter}}${osd-ass-cc/0}${?cache-used:\\N\\h\\h\\h\\h\\h}{\\b1}${?cache-used:Cache:\\h\\h}{\\b0}${?cache-used:${cache-used}\\h\\h+${demuxer-cache-duration} sec}\\N\\N{\\b1}Video:{\\b0}\\h\\h${video-codec}\\N\\h\\h\\h\\h\\h{\\b1}A-V:{\\b0}\\h\\h${avsync}\\N\\h\\h\\h\\h\\h{\\b1}Dropped:{\\b0}\\h\\h${drop-frame-count}\\h\\h\\h\\h\\h{\\b1}VO:{\\b0}\\h\\h${vo-drop-frame-count}\\N\\h\\h\\h\\h\\h{\\b1}FPS:{\\b0}\\h\\h${fps} (specified)\\h\\h${estimated-vf-fps} (estimated)\\N\\h\\h\\h\\h\\h{\\b1}Native Resolution:{\\b0}\\h\\h${video-params/w} x ${video-params/h}\\N\\h\\h\\h\\h\\h{\\b1}Window Scale:{\\b0}\\h\\h${window-scale}\\N\\h\\h\\h\\h\\h{\\b1}Aspect Ratio:{\\b0}\\h\\h${video-params/aspect}\\N\\h\\h\\h\\h\\h{\\b1}Pixel format:{\\b0}\\h\\h${video-params/pixelformat}\\N\\h\\h\\h\\h\\h{\\b1}Colormatrix:{\\b0}\\h\\h${video-params/colormatrix}\\N\\h\\h\\h\\h\\h{\\b1}Primaries:{\\b0}\\h\\h${video-params/primaries}\\N\\h\\h\\h\\h\\h{\\b1}Levels:{\\b0}\\h\\h${video-params/colorlevels}${?packet-video-bitrate:${!=packet-video-bitrate==0:\\N\\h\\h\\h\\h\\h}}{\\b1}${?packet-video-bitrate:${!=packet-video-bitrate==0:Bitrate:\\h\\h}}{\\b0}${?packet-video-bitrate:${!=packet-video-bitrate==0:${packet-video-bitrate} kbps}}\\N\\N{\\b1}Audio:{\\b0}\\h\\h${audio-codec}\\N\\h\\h\\h\\h\\h{\\b1}Sample Rate:{\\b0}\\h\\h${audio-params/samplerate}\\N\\h\\h\\h\\h\\h{\\b1}Channels:{\\b0}\\h\\h${audio-params/channel-count}${?packet-audio-bitrate:${!=packet-audio-bitrate==0:\\N\\h\\h\\h\\h\\h}}{\\b1}${?packet-audio-bitrate:${!=packet-audio-bitrate==0:Bitrate:\\h\\h}}{\\b0}${?packet-audio-bitrate:${!=packet-audio-bitrate==0:${packet-audio-bitrate} kbps}}" 8000
#h add sub-delay -0.041708333333
#l add sub-delay 0.041708333333
y add sub-delay -0.041708333333
x add sub-delay 0.041708333333
j add sub-pos 1
k add sub-pos -1

View File

@ -1,10 +1,11 @@
#Allgemein
vo=gpu
#gpu-context=open-gl
gpu-api=vulkan
#gpu-api=vulkan
profile=gpu-hq
#hwdec=auto-copy
#hwdec=auto-safe
spirv-compiler=shaderc
slang=ger,enm,eng
#force-window=yes
osd-playing-msg=playing: ${media-title} ${!window-scale==1.000:(scale: ${window-scale})}
@ -30,42 +31,57 @@ deband=yes
deband-iterations=1
deband-threshold=32
deband-range=16
deband-grain=0
deband-grain=12
#Noise & Resizer
#Resizer
#scaler-resizes-only
scale=haasnsoft
#scale=haasnsoft
scale=spline36
#scale=ewa_lanczossharp
scale-antiring=0.7
#dscale=ewa_lanczossoft
dscale=haasnsoft
dscale=mitchell
dscale-antiring=0.7
cscale=haasnsoft
#cscale=haasnsoft
cscale=spline36
#cscale-window=blackman
#cscale-radius=3
#cscale-antiring=0.7
#Interpolation
opengl-waitvsync=yes
# Interpolation
opengl-waitvsync=no
interpolation=yes
blend-subtitles=yes
#interpolation-threshold=0.01
video-sync=display-resample
tscale=box
tscale-window=sphinx
tscale-radius=1.0
tscale-clamp=0.0
tscale=oversample
blend-subtitles=yes
#Deinterlace
#vf-defaults=yadif
#deinterlace=auto
## subtitles
sub-font=Fontin Sans Rg
sub-bold=yes
sub-font-size=47
sub-border-size=3.2
sub-pos=98
sub-blur=0.2
sub-gray=yes
sub-fix-timing=yes
sub-ass-force-margins=yes
# cycle with `u`
# sub-ass-override=yes
# this doesn't seem to do anything
# sub-ass-force-style=FontName=Fontin Sans Rg,bold=0,fontsize=172,marginv=80,marginr=300,marginl=300,borderStyle=1,outline=4.0,shadow=0,primarycolour=&H00FFFFFF,outlinecolour=&H00000000,playresx=1920,playresy=1080
demuxer-mkv-subtitle-preroll=index
[encode]
scale=spline36
cscale=spline36
dscale=spline36
deband=no
interpolation=no
@ -73,7 +89,7 @@ interpolation=no
[dvd]
#fbo-format=rgba32f # for fsrcnn
#glsl-shader="/home/kageru/.config/mpv/fsrcnn/FSRCNN_24_4_2.glsl"
vf=vapoursynth=~/.config/mpv/scripts/dvd.vpy
#vf=vapoursynth=~/.config/mpv/scripts/dvd.vpy
glsl-shader="~/.config/mpv/shaders/fsrcnnx3x.glsl"
glsl-shader="/home/kageru/.config/mpv/shaders/grain2.glsl"
deband=yes
@ -93,14 +109,16 @@ glsl-shader="~/.config/mpv/shaders/fsrcnnx16.glsl"
[db]
deband=yes
deband-iterations=2
deband-iterations=1
deband-threshold=80
deband-range=16
deband-grain=0
[stream]
scale=spline36
dscale=spline36
interpolation=no
deband-threshold=64
[grain]
glsl-shader="/home/kageru/.config/mpv/shaders/grain2.glsl"

View File

@ -0,0 +1,10 @@
{
"rust-analyzer.serverPath": "/usr/bin/rust-analyzer",
"rust-analyzer.inlayHints.chainingHints": true,
"languageserver": {
"kotlin": {
"command": "/usr/bin/kotlin-language-server",
"filetypes": ["kotlin", "kt"]
}
}
}

76
.config/nvim/init.vim Normal file
View File

@ -0,0 +1,76 @@
filetype on
filetype plugin on
autocmd BufNewFile,BufRead *.vpy setfiletype python
autocmd BufNewFile,BufRead *.kt setfiletype kotlin
set hidden
set number
set showmatch
set hlsearch
set ignorecase
set smartcase
set incsearch
set autoindent
set cindent
set expandtab
set shiftwidth=2
set smartindent
set smarttab
set softtabstop=2
set relativenumber
" set beam cursor in insert mode
let &t_SI = "\<esc>[5 q"
let &t_SR = "\<esc>[5 q"
let &t_EI = "\<esc>[2 q"
set undolevels=1000
set backspace=indent,eol,start
set background=dark
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
colorscheme monokai_pro
syntax on
let g:netrw_liststyle = 3
let g:netrw_banner = 0
let g:netrw_browse_split = 4
let g:netrw_winsize = 15
nmap <F2> :Vexplore<Return>
autocmd BufNewFile,BufRead *.rs nmap <C-A-L> :RustFmt<Return>
nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
nnoremap <C-L> <C-W>l
nnoremap <C-H> <C-W>h
set splitbelow
set splitright
nmap <S-Tab> :Snippets<CR>
nmap <C-G> :Files<CR>
imap <C-G> <Esc>:Files<CR>
nmap <S-L> :BLines<CR>
nmap <C-F> :Lines<CR>
nmap <C-B> :Buffers<CR>
imap <C-B> <Esc>:Buffers<CR>
nmap <C-space> :RustHoverActions<CR>:RustHoverActions<CR>
let g:ackprg = 'rg --vimgrep --smart-case'
let g:ack_autoclose = 1
let g:ack_use_cword_for_empty_search = 1
nnoremap <Leader>/ :Ack!<Space>
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
lua require('plugins')
lua require('lspstuff')
lua require('completion')
lua require('mason').setup()
set signcolumn=yes
autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false })

View File

@ -0,0 +1,56 @@
vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'}
vim.opt.shortmess = vim.opt.shortmess + { c = true}
vim.api.nvim_set_option('updatetime', 300)
-- Completion Plugin Setup
local cmp = require'cmp'
cmp.setup({
-- Enable LSP snippets
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-n>'] = cmp.mapping.select_next_item(),
-- Add tab support
['<S-Tab>'] = cmp.mapping.select_prev_item(),
['<Tab>'] = cmp.mapping.select_next_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-e>'] = cmp.mapping.close(),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Insert,
select = true,
})
},
-- Installed sources:
sources = {
{ name = 'nvim_lsp', keyword_length = 1 }, -- from language server
{ name = 'path' }, -- file paths
{ name = 'nvim_lsp_signature_help' }, -- display function signatures with current parameter emphasized
{ name = 'nvim_lua', keyword_length = 1 }, -- complete neovim's Lua runtime API such vim.lsp.*
{ name = 'buffer', keyword_length = 1 }, -- source current buffer
{ name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip
{ name = 'calc' }, -- source for math calculation
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
formatting = {
fields = {'menu', 'abbr', 'kind'},
format = function(entry, item)
local menu_icon ={
nvim_lsp = 'λ',
vsnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name]
return item
end,
},
})

View File

@ -0,0 +1,55 @@
local rt = {
server = {
settings = {
on_attach = function(_, bufnr)
-- Hover actions
vim.keymap.set("n", "<C-a>", rt.hover_actions.hover_actions, { buffer = bufnr })
-- Code action groups
vim.keymap.set("n", "<Leader>a", rt.code_action_group.code_action_group, { buffer = bufnr })
require 'illuminate'.on_attach(client)
end,
["rust-analyzer"] = {
checkOnSave = {
command = "clippy"
},
},
}
},
}
require('rust-tools').setup(rt)
require('rust-tools').inlay_hints.enable()
local sign = function(opts)
vim.fn.sign_define(opts.name, {
texthl = opts.name,
text = opts.text,
numhl = ''
})
end
sign({name = 'DiagnosticSignError', text = ''})
sign({name = 'DiagnosticSignWarn', text = ''})
sign({name = 'DiagnosticSignHint', text = ''})
sign({name = 'DiagnosticSignInfo', text = ''})
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
local bufopts = { noremap=true, silent=true, buffer=bufnr }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<leader><space>', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
end
require('lspconfig')['rust_analyzer'].setup{
on_attach = on_attach,
}

View File

@ -0,0 +1,32 @@
vim.cmd [[packadd packer.nvim]]
return require('packer').startup(function()
-- Visual
use 'phanviet/vim-monokai-pro'
use 'vim-airline/vim-airline'
-- Management
use 'williamboman/mason.nvim'
use 'williamboman/mason-lspconfig.nvim'
use 'neovim/nvim-lspconfig'
-- Completion
use 'hrsh7th/nvim-cmp'
use 'sirver/UltiSnips'
use 'honza/vim-snippets'
use 'hrsh7th/cmp-nvim-lsp'
use 'hrsh7th/cmp-nvim-lua'
use 'hrsh7th/cmp-nvim-lsp-signature-help'
use 'hrsh7th/cmp-path'
use 'hrsh7th/cmp-buffer'
use 'hrsh7th/vim-vsnip'
-- Languages
use 'simrat39/rust-tools.nvim'
use 'rust-lang/rust.vim'
-- Misc
use 'mileszs/ack.vim'
use 'lotabout/skim.vim'
use 'tpope/vim-fugitive'
end)

View File

@ -6,7 +6,7 @@ detect-rounded-corners = true;
shadow-opacity = 0.65;
shadow-ignore-shaped = false;
shadow-exclude = [ "name = 'Notification'", "override_redirect = 1 && !WM_CLASS@:s", "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", "_GTK_FRAME_EXTENTS@:c", "class_g ?= 'i3-frame'" ];
inactive-opacity = 1;
inactive-opacity = 0.9;
active-opacity = 1;
inactive-dim = 0.0;
blur-background-exclude = [ "class_g = 'slop'" ]
@ -14,32 +14,42 @@ blur-background = true;
#blur-kern = "7x7box";
blur-kern = "11,11,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
fading = true;
fade-delta = 6;
fade-in-step = 0.04;
fade-out-step = 0.04;
fade-exclude = [ "name = 'mpv'", "class_g = 'chromium'" ];
fade-delta = 10;
fade-in-step = 0.06;
fade-out-step = 0.06;
fade-exclude = [ "name = 'mpv'", "class_g = 'chromium'", "class_g = 'firefox'" , "class_g = 'Nightly'" ];
backend = "glx";
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-client-opacity = true;
unredir-if-possible = false;
glx-no-stencil = true;
#glx-swap-method = -1;
refresh-rate = 0;
vsync = "opengl-swc";
vsync = true;
dbe = false;
focus-exclude = [ "class_g = 'Cairo-clock'", "name *= 'mpv'", "name *= 'chromium'", "name *?= 'discord'" ];
focus-exclude = [
"name *= 'mpv'",
"name *= 'chromium'",
"class_g = 'Nightly'",
"class_g = 'discord'",
"class_g = 'qutebrowser'",
];
detect-transient = true;
detect-client-leader = true;
invert-color-include = [ ];
glx-copy-from-front = false;
glx-swap-method = "undefined";
opacity-rule = [
"100:class_g = 'polybar'",
"94:class_g = 'St' && focused",
"86:class_g = 'St' && !focused"
#"94:class_g = 'St' && focused",
"100:name *?= 'chromium'",
"100:class_g = 'Firefox'",
"100:class_g = 'Nightly'",
"100:class_g = 'discord'",
"100:class_g *?= 'mpv'",
"92:class_g = 'St' && !focused",
"92:class_g = 'Alacritty' && !focused",
"70:class_g *?= 'rofi'"
];
#opacity-rule = [ "20:class_g = 'polybar'", "99:name *?= 'Call'", "99:name *?= 'chromium'", "99:class_g *?= 'mpv'", "99:name *?= 'Conky'", "99:class_g = 'Darktable'", "50:class_g = 'Dmenu'", "99:name *?= 'Event'", "99:class_g = 'Firefox'", "99:class_g = 'GIMP'", "99:name *?= 'Image'", "99:class_g = 'Lazpaint'", "99:class_g = 'Midori'", "99:name *?= 'Minitube'", "99:class_g = 'Mousepad'", "99:name *?= 'MuseScore'", "90:name *?= 'Page Info'", "99:name *?= 'Pale Moon'", "90:name *?= 'Panel'", "99:class_g = 'Pinta'", "90:name *?= 'Restart'", "99:name *?= 'sudo'", "99:name *?= 'Screenshot'", "99:class_g = 'Viewnior'", "99:class_g = 'VirtualBox'", "99:name *?= 'VLC'", "99:name *?= 'Write'", "100:class_g = 'URxvt' && !_NET_WM_STATE@:32a", "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", "96:_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'" ];
wintypes :
{
tooltip :

View File

@ -8,27 +8,26 @@
;=====================================================
[colors]
background = #00303031
background-alt = #00303031
foreground = #fafbfb
foreground-alt = #dddddd
primary = #fafbfb
secondary = #dddddd
green = #8dd151
alert = #9b3331
background = #442d2a2e
background-alt = #442d2a2e
foreground = #ffffff
foreground-alt = #ffffff
primary = #fcfcfa
secondary = #dcdcda
green = #a9dc76
alert = #ff6188
[bar/custom]
override-redirect = true
wm-restack = i3
[bar/right]
monitor = ${env:MONITOR:HDMI-0}
monitor = ${env:MONITOR:HDMI-1}
width = 100%
height = 32
;offset-x = 1%
;offset-y = 1%
radius = 4.0
#offset-x = 1%
#offset-y = 1%
radius = 0.0
fixed-center = true
bottom = true
@ -48,38 +47,31 @@ module-margin-left = 2
module-margin-right = 2
; I’m a weeb who also listens to weeb music, so I needed a font with Kanji
font-0 = "Noto Sans CJK JP Regular:size=11;1"
font-1 = "Wuncon Siji:size=11;1"
font-2 = "Noto Sans CJK JP Regular:size=11;1"
font-0 = "Noto Sans CJK JP:size=11"
font-1 = "Wuncon Siji:size=11"
font-2 = "Noto Sans CJK JP:size=11"
modules-left = i3 mpd
modules-center =
; add battery here when using a mobile device
modules-right = cpu memory filesystem date
;wm-restack = bspwm
wm-restack = i3
;override-redirect = true
;scroll-up = bspwm-desknext
;scroll-down = bspwm-deskprev
scroll-up = i3wm-wsnext
scroll-down = i3wm-wsprev
scroll-up = i3wm-wsprev
scroll-down = i3wm-wsnext
cursor-click = pointer
cursor-scroll = ns-normal
[bar/left]
monitor = ${env:MONITOR:DVI-D-0}
monitor = ${env:MONITOR:HDMI-A-0}
width = 100%
height = 22
;offset-x = 1%
;offset-y = 1%
radius = 6.0
height = 28
radius = 0.0
fixed-center = true
bottom = true
@ -89,7 +81,7 @@ foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 4
border-size = 0
border-color = #00000000
padding-left = 0
@ -98,38 +90,33 @@ padding-right = 2
module-margin-left = 1
module-margin-right = 2
font-0 = "Noto Sans CJK JP Regular:size=11;1"
font-1 = "Noto Sans CJK JP Regular:size=11;1"
font-2 = "Noto Sans CJK JP Regular:size=11;1"
font-0 = "Noto Sans CJK JP:size=14;1"
font-1 = "Wuncon Siji:size=14;1"
font-2 = "Noto Sans CJK JP:size=14;1"
modules-left = i3 mpd
modules-center =
modules-right = cpu memory filesystem date
;wm-restack = bspwm
wm-restack = i3
;override-redirect = true
;scroll-up = bspwm-desknext
;scroll-down = bspwm-deskprev
scroll-up = i3wm-wsnext
scroll-down = i3wm-wsprev
scroll-up = i3wm-wsprev
scroll-down = i3wm-wsnext
cursor-click = pointer
cursor-scroll = ns-normal
[bar/main]
monitor = ${env:MONITOR:DP-0}
monitor = ${env:MONITOR:DisplayPort-0}
width = 100%
height = 28
;offset-x = 1%
;offset-y = 1%
radius = 2.0
height = 25
offset-x = 0%
offset-y = 0%
radius = 0.0
fixed-center = true
bottom = false
bottom = true
background = ${colors.background}
foreground = ${colors.foreground}
@ -137,7 +124,7 @@ foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 4
border-size = 0
border-color = #00000000
padding-left = 0
@ -146,32 +133,27 @@ padding-right = 2
module-margin-left = 1
module-margin-right = 2
font-0 = "Noto Sans CJK JP Regular:size=11;1"
font-1 = "Noto Sans CJK JP Regular:size=11;1"
font-2 = "Noto Sans CJK JP Regular:size=11;1"
font-0 = "Noto Sans CJK JP:size=11;1"
font-1 = "Wuncon Siji:size=11;1"
font-2 = "Noto Sans CJK JP:size=11;1"
modules-left = i3 mpd
modules-center =
modules-right = cpu memory filesystem date
tray-position = center
tray-position = none
tray-padding = 2
tray-transparent = true
tray-background = #80303031
;wm-restack = bspwm
wm-restack = i3
tray-background = #00303031
;override-redirect = true
;scroll-up = bspwm-desknext
;scroll-down = bspwm-deskprev
scroll-up = i3wm-wsnext
scroll-down = i3wm-wsprev
scroll-up = i3wm-wsprev
scroll-down = i3wm-wsnext
cursor-click = pointer
cursor-scroll = ns-normal
[module/xwindow]
type = internal/xwindow
@ -198,8 +180,10 @@ type = internal/fs
interval = 25
mount-0 = /
mount-1 = /home
mount-2 = /home/kageru/.local/share/Steam
label-mounted = %free%
label-mounted = %free% |
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}
@ -278,7 +262,7 @@ icon-next = »
label-offline = mpd is offline
; Only applies if <bar-progress> is used
bar-progress-width = 10
bar-progress-width = 15
bar-progress-indicator = |
bar-progress-fill = ─
bar-progress-empty = ─

View File

@ -161,6 +161,7 @@ ext djvu, has atril, X, flag f = atril -- "$@"
#-------------------------------------------
# Image Viewing:
#-------------------------------------------
mime ^image, has imv, X, flag f = imv -- "$@"
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
mime ^image, has feh, X, flag f = feh -- "$@"
mime ^image, has mirage, X, flag f = mirage -- "$@"

25
.config/starship.toml Normal file
View File

@ -0,0 +1,25 @@
add_newline = false
scan_timeout = 10
[line_break]
disabled = true
[character]
success_symbol = "[](bold green)"
error_symbol = "[](bold red)"
[directory]
style = "cyan"
[java]
style = "red"
[git_branch]
format = "[$symbol$branch]($style) "
symbol = ""
[git_status]
disabled = true
[package]
disabled = true

287
.config/sway/config Normal file
View File

@ -0,0 +1,287 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
gaps inner 10
gaps outer -10
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
#set $menu dmenu_path | wofi --dmenu | xargs swaymsg exec --
set $menu wofi --show run
smart_borders on
bindsym XF86AudioPlay exec mpc toggle
bindsym XF86AudioNext exec mpc next
bindsym $mod+F7 exec mpc next
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg /home/kageru/Pictures/bg_train.jpg fill
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
output HDMI-A-1 mode 2560x1440@144Hz
output HDMI-A-1 position 2560 0
output DP-1 mode 2560x1440@240Hz
output DP-1 position 0 0
default_border pixel 2
default_floating_border pixel 3
bindsym $mod+u border none
bindsym $mod+y border pixel 3
### Idle configuration
#
# Example configuration:
#
# exec swayidle
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
exec swayidle -w timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
before-sleep 'swaylock -e -f -c 000000' \
after-resume /home/kageru/bin/tunnel
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
# }
input "type:keyboard" {
repeat_delay 250
repeat_rate 40
xkb_layout "de"
xkb_variant "neo_qwertz"
pointer_accel 0
accel_profile flat
}
input "type:touchpad" {
pointer_accel 0
accel_profile flat
}
input "type:mouse" {
pointer_accel 0
accel_profile flat
}
input 1386:221:Wacom_Bamboo_Connect_Pen {
map_from_region 0.0x0.0 0.7x0.7
map_to_output DP-1
}
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
for_window [app_id="mpv"] floating enable
for_window [class="feh"] floating enable
for_window [app_id="org.qutebrowser.qutebrowser"] border none
for_window [class="sxiv"] floating enable
for_window [title="YGO Omega"] floating enable
for_window [app_id="Alacritty"] opacity 0.95
no_focus [class="jetbrains-.*"]
no_focus [class=".*discord.*"]
for_window [urgent=latest] none
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+q kill
# Start your launcher
bindsym $mod+d exec $menu
bindsym Ctrl+Shift+4 exec /home/kageru/bin/ppsh
#bindsym Ctrl+Shift+8 exec /home/kageru/bin/pyshare -e 1
#bindsym $mod+Shift+u exec /home/kageru/bin/pyshare -m text
bindsym $mod+x exec swayr switch-window
bindsym $mod+Ctrl+s exec systemctl suspend
bindsym $mod+Shift+d exec discord
bindsym $mod+Shift+s sticky toggle
bindsym $mod+F2 exec qutebrowser
bindsym $mod+F3 exec alacritty -e ranger
bindsym $mod+F5 exec alacritty -e ncmpcpp
bindsym $mod+m exec mpv --force-window=immediate --gpu-context=wayland --player-operation-mode=pseudo-gui --profile=db -- "`wl-paste`"
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow 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
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10; workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+g splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
workspace_auto_back_and_forth yes
bindsym $mod+b workspace back_and_forth
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
# bar {
# position top
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
# status_command while date +'%Y-%m-%d %R:%S'; do sleep 1; done
# colors {
# statusline #ffffff
# background #323232
# inactive_workspace #32323200 #32323200 #5c5c5c
# }
# }
include /etc/sway/config.d/*
exec swayrd
exec /home/kageru/bin/autostart_sway

36
.config/zathura/zathurarc Normal file
View File

@ -0,0 +1,36 @@
# Base16 Nord
# Author: arcticicestudio
set default-bg "#313132"
set default-fg "#3B4252"
set statusbar-fg "#C5C8C6"
set statusbar-bg "#313132"
set inputbar-bg "#313132"
set inputbar-fg "#8FBCBB"
set notification-bg "#2E3440"
set notification-fg "#8FBCBB"
set notification-error-bg "#2E3440"
set notification-error-fg "#88C0D0"
set notification-warning-bg "#2E3440"
set notification-warning-fg "#88C0D0"
set highlight-color "#5E81AC"
set highlight-active-color "#EBCB8B"
set completion-bg "#3B4252"
set completion-fg "#EBCB8B"
set completion-highlight-fg "#8FBCBB"
set completion-highlight-bg "#EBCB8B"
set recolor-lightcolor "#313132"
set recolor-darkcolor "#c5c8c6"
# set recolor "true"
set recolor-keephue "true"

View File

@ -3,22 +3,27 @@ alias qaac='wine ~/.wine/drive_c/qaac/qaac.exe'
alias qaac_release=/mnt/hephaestos/qaac/qaac91
alias define='python /home/kageru/programming/mwebster/mwebster.py'
alias nanaone-stream='mpv rtmp://live1.brb.re/live/nanaone'
alias ls='exa'
alias ls=exa
alias du=dua
#alias fzf=sk
alias up='sudo pacman -Syu'
alias in='sudo pacman -S'
alias feg=feh # don’t ask
alias exat='exa --tree -L 3'
alias tree='exa --tree'
alias animesync='python /home/kageru/programming/animesync-personal/animesync.py'
#alias autoremove='sudo pacman -R $(pacaur -Qdtq)'
export EDITOR=/usr/bin/vim
#alias nt='alacritty --working-directory $PWD &'
alias nt='urxvtc -cd $PWD &'
function nt() {
alacritty --working-directory $PWD &
disown
}
#alias nt='urxvtc -cd $PWD &'
alias ej='udisksctl power-off -b'
alias monitor_on='pactl load-module module-loopback'
alias monitor_off='pactl unload-module module-loopback'
alias eac='wine "/home/kageru/.wine/drive_c/Program Files (x86)/Exact Audio Copy/EAC.exe"'
alias sizeof='expac -H M "%n\t%m" -s'
alias now='date +%H:%M:%S'
alias cat='bat -pp'
alias c='bc <<< '
alias ll='ls -l'
alias la='ls -a'
@ -26,25 +31,49 @@ alias grep="grep --colour"
alias clip='xsel -b'
alias bitrateviewer='wine "/home/kageru/.wine/drive_c/Program Files (x86)/BitrateViewer/BitrateViewer.exe"'
alias colorpicker="maim -sot 0 | convert - -resize 1x1\! -format '%[pixel:p{0,0}]' info:-"
alias fixgit='eval "$(ssh-agent -s)"; ssh-add ~/.ssh/git'
alias sv='systemctl'
alias xo='xdg-open'
alias resetgamma='xrandr --output DVI-D-0 --gamma 1:1:1 --output HDMI-1 --gamma 1:1:1 --output HDMI-0 --gamma 1:1:1 --output DP-0 --gamma 1:1:1'
alias texbuild='pdflatex -interaction=nonstopmode'
alias weather='curl wttr.in/karlsruhe -s | head -n 7 -'
alias weathertoday='curl wttr.in/karlsruhe -s | head -n 17 -'
alias weather='curl wttr.in/hamburg -s | head -n 7 -'
alias weathertoday='curl wttr.in/hamburg -s | head -n 17 -'
alias playdir='for f in ./*; do; mpv $f; done;'
alias mntusb='sudo mount /dev/sdi1 ~/usb'
alias mntphone='simple-mtpfs --device 1 ~/usb'
alias umubs='sudo umount ~/usb'
alias gst='git status'
alias gco='git checkout'
alias gs='git switch'
alias gsc='git switch -c'
alias gr='git restore'
alias gcp='git cherry-pick'
alias gl='git log'
alias blps='~/.steam/steam/steamapps/common/BorderlandsPreSequel/BorderlandsPreSequel'
alias dir2flac='for f in *.wav; do
ffmpeg -i "$f" -compression_level 12 "`basename "$f" .wav`.flac"
done
for f in *.WAV; do
ffmpeg -i "$f" -compression_level 12 "`basename "$f" .WAV`.flac"
done;'
alias vpnon='sudo systemctl start openvpn-client@client.service'
alias vpnoff='sudo systemctl stop openvpn-client@client.service'
alias tunnel='vpnoff && vpnon'
alias getip='curl https://canihazip.com/s'
alias config='/usr/bin/git --git-dir=/home/kageru/dotfiles/ --work-tree=/home/kageru'
alias -g ...='../../' #cd ...
alias -g ....='../../../' #cd ....
alias -g .....='../../../../' #cd .....
alias :q='exit'
alias :wq='exit'
alias sprunge="curl -F 'sprunge=<-' http://sprunge.us"
# Aliases for SSH connections (raspi, remote server, etc.)
# Aliases for SSH connections (mount sshfs, mac IDs for WoL, etc)
[ -f ~/.config/zsh/ssh.sh ] && source ~/.config/zsh/ssh.sh
paste() {
curl -F"file=@$1" https://p.kageru.moe | wl-copy
}
alias dark='xset dpms force off'

View File

@ -219,7 +219,7 @@ URxvt.keysym.M-C-v: perl:clipboard:paste_escaped
! URxvt*scrollWithBuffer: boolean
! URxvt*tintColor: !7DA55
! URxvt*blurRadius: HxV
URxvt*fading: 0
URxvt*fading: 5
! URxvt*fadeColor: color
! URxvt*utmpInhibit: boolean
! URxvt*urgentOnBell: boolean

View File

@ -171,6 +171,8 @@ def_key "L"
play_item
def_key "ctrl-d"
page_down
def_key "ctrl-u"
page_up
def_key "h"
previous_column
@ -191,6 +193,8 @@ def_key "K"
select_item
scroll_up
def_key "x"
delete_playlist_items
#def_key "mouse"
# mouse_event

View File

@ -1,6 +1,5 @@
visualizer_fifo_path = "/tmp/mpd.fifo"
visualizer_data_source = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
visualizer_sync_interval = "30"
visualizer_in_stereo = "yes"
visualizer_type = "spectrum"
visualizer_look = "+|"
@ -16,4 +15,3 @@ regular_expressions = "extended"
search_engine_default_search_mode = "1"
external_editor = "vim"
use_console_editor = "yes"

69
.vimrc
View File

@ -1,69 +0,0 @@
set nocompatible " be iMproved, required
filetype on " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install bundles
"let path = '~/some/path/here'
"call vundle#rc(path)
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'zah/nim.vim'
Plugin 'scrooloose/syntastic'
Plugin 'w0ng/vim-hybrid'
Plugin 'rust-lang/rust.vim'
Plugin 'fatih/vim-go'
Plugin 'udalov/kotlin-vim'
Plugin 'Valloric/YouCompleteMe'
"Plugin 'zxqfl/tabnine-vim'
call vundle#end() " required
"set rtp+=~/code/tabnine-vim
filetype plugin on
autocmd BufNewFile,BufRead *.vpy setfiletype python
set number
set showmatch
set hlsearch
set ignorecase
set smartcase
set incsearch
set autoindent
set cindent
set expandtab
set shiftwidth=4
set smartindent
set smarttab
set softtabstop=4
set relativenumber
" set beam cursor in insert mode
let &t_SI = "\<esc>[5 q"
let &t_SR = "\<esc>[5 q"
let &t_EI = "\<esc>[2 q"
set autochdir
set undolevels=1000
set backspace=indent,eol,start
let g:hybrid_custom_term_colors = 1
let g:hybrid_reduced_contrast = 1
set background=dark
colorscheme hybrid
syntax on
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

75
.zshrc
View File

@ -1,7 +1,18 @@
export PATH=$PATH:~/bin
export GOPATH=~/go
export PATH=$PATH:~/bin:~/go/binA:/opt/devkitpro/devkitARM/bin:/opt/devkitpro/tools/bin:~/.local/bin
export RUSTFLAGS="-C target-cpu=native"
export DEVKITPRO=/opt/devkitpro
export DEVKITARM=/opt/devkitpro/devkitARM
export DEVKITPPC=/opt/devkitpro/devkitPPC
#export PAGER=nvimpager
[ -f ~/.config/zsh/aliases.sh ] && source ~/.config/zsh/aliases.sh
SAVEHIST=100000
HISTFILE=~/.zhistory
HISTSIZE=100000
setopt appendhistory
autoload -Uz vcs_info
autoload -U colors && colors
@ -9,24 +20,26 @@ zstyle ':vcs_info:*' stagedstr "${fg_blue}?"
zstyle ':vcs_info:*' unstagedstr "${fg_brown}?"
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r'
zstyle ':vcs_info:*' enable git svn
zstyle ':vcs_info:*' enable git
precmd () {
if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
zstyle ':vcs_info:*' formats "${fg_green} ${fg_normal}%b%c%u${at_normal}"
} else {
zstyle ':vcs_info:*' formats "${fg_green} ${fg_normal}%b%c%u${fg_red}!${at_normal}"
}
vcs_info
}
# no longer needed because starship handles the git stuff
# precmd () {
#if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
#zstyle ':vcs_info:*' formats "${fg_green} ${fg_normal}%b%c%u${at_normal}"
#} else {
#zstyle ':vcs_info:*' formats "${fg_green} ${fg_normal}%b%c%u${fg_red}!${at_normal}"
#}
#vcs_info
#}
setopt prompt_subst
#setopt prompt_subst
# I usually change the hostname color between my systems
hostcolor="4"
bgcolor="16"
PROMPT="%(!.%F{3}[%F{1}%n%F{3}@%F{$hostcolor}%m %F{3}%c%F{5}\${vcs_info_msg_0_}%F{3}] %(?/%F{2}/%F{1})#.\
%F{1}[%F{3}%n%F{1}@%F{$hostcolor}%m %F{146}%c%F{111}\${vcs_info_msg_0_}%F{1}] %(?/%F{2}/%F{1})Δ)%f "
eval "$(starship init zsh)"
#PROMPT="%(!.%F{3}[%F{1}%n%F{3}@%F{$hostcolor}%m %F{3}%c%F{5}\${vcs_info_msg_0_}%F{3}] %(?/%F{2}/%F{1})#.\
#%F{1}[%F{3}%n%F{1}@%F{$hostcolor}%m %F{5}%c%F{4}\${vcs_info_msg_0_}%F{1}] %(?/%F{2}/%F{1}))%f "
# the same prompt without git/vcs stuff
#PROMPT="%(!.%F{3}[%F{1}%n%F{3}@%F{$hostcolor}%m %F{3}%c%F{5}%F{3}] %(?/%F{2}/%F{1})#.%F{1}[%F{3}%n%F{1}@%F{$hostcolor}%m %F{146}%c%F{111}%F{1}] %(?/%F{2}/%F{1})Δ)%f "
@ -43,44 +56,24 @@ setopt complete_in_word
if [ ! -S ~/.ssh/ssh_auth_sock ]; then
eval `ssh-agent`
ssh-add -l > /dev/null || ssh-add
ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
ssh-add ~/.ssh/git
ssh-add ~/.ssh/aur_ecdsa
ssh-add ~/.ssh/maria
fi
export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
ssh-add ~/.ssh/git
clear
# disclaimer: I blatantly copied all of this without actually knowing what it does. ¯\_(ツ)_/¯
ssh-add -l > /dev/null || ssh-add
ZSHCACHEDIR=/tmp/$USER-zsh-cache
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' expand prefix suffix
zstyle ':completion:*' list-suffixes true
# This line does the non-prefix matching magic
zstyle ':completion:*' matcher-list '' '+m:{a-z}={A-Z}' 'r:|[._-]=** r:|=**' 'l:|=* r:|=*'
zstyle ':completion:*' preserve-prefix '//[^/]##/'
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path $ZSHCACHEDIR
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command pids4kill
zstyle ':completion:::::' completer _complete _approximate
zstyle ':completion:*:approximate:*' max-errors 2
zstyle ':completion:*' completer _complete _prefix
zstyle ':completion::prefix-1:*' completer _complete
zstyle ':completion:incremental:*' completer _complete _correct
zstyle ':completion:predict:*' completer _complete # Completion caching
zstyle ':completion::complete:*' use-cache 1
zstyle ':completion::complete:*' cache-path $ZSHCACHEDIR/$HOST # Expand partial paths
zstyle ':completion:*:functions' ignored-patterns '_*'
zstyle ':completion:*' squeeze-slashes 'yes' # Include non-hidden directories in globbed file completions
zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' # Separate matches into groups
zstyle ':completion:*:matches' group 'yes' # Describe each match group.
zstyle ':completion:*:descriptions' format "%B---- %d%b" # Messages/warnings format
zstyle ':completion:*:messages' format '%B%U---- %d%u%b'
zstyle ':completion:*:warnings' format '%B%U---- no match for: %d%u%b' # Describe options in full
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:options' auto-description '%d'
setopt nonomatch
source /usr/share/fzf/key-bindings.zsh

View File

@ -1,16 +1,16 @@
#!/bin/sh
rm -rf /home/kageru/temp/*
cp ~/webpw.kdbx /mnt/gaia/
fcitx
#syncthing &
# xsetwacom --set 12 Area -14900 0 44400 16000
# xrandr --fb 15360x2161 --dpi 192x192 --output DVI-D-0 --scale 2x2.0008 --pos 0x0 --panning 3840x2161+0+0 --output DP-0 --scale 2x2.0008 --panning 3840x2161+3840+0 --rate 144 --output HDMI-1 --panning 3840x2160+7680+0 --output HDMI-0 --scale 2x2.0008 --panning 3840x2161+11520+0
xrandr --fb 8320x2160 --output DVI-D-0 --pos 0x0 --mode 1920x1080 --rate 144 --output DP-0 --mode 2560x1440 --rate 144 --right-of DVI-D-0 --output HDMI-0 --right-of DP-0 --dpi 109x109
~/bin/fixkeyboard
xrandr --fb 5120x1440 --dpi 96 \
--output DisplayPort-0 --pos 0x0 -r 240 --mode 2560x1440 \
--output HDMI-A-0 --mode 2560x1440 -r 120 --left-of DisplayPort-0
~/.fehbg
rm -rf /home/kageru/temp/*
cp ~/webpw.kdbx /mnt/calliope/
cp ~/webpw.kdbx ~/Sync/webpw.kdbx
# fcitx
sshfs -i ~/.ssh/lain lain:/home/kgt/download /mnt/lain -C &
#syncthing &
xrdb ~/.Xresources
mpd
redshift -t 6500:3200 -l 53.55:9.64 &
pactl unload-module module-role-cork
dunst &
redshift -t 6500:3200 -l 54:10 &

10
bin/autostart_sway Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
rm -rf /home/kageru/temp/*
cp ~/webpw.kdbx /mnt/calliope/
cp ~/webpw.kdbx ~/Sync/webpw.kdbx
# fcitx
sshfs -i ~/.ssh/lain lain:/home/kgt/download /mnt/lain -C &
gammastep -t 6500:3200 -l 54:10 &
waybar &
mako &

126
bin/base16-monokai.sh Executable file
View File

@ -0,0 +1,126 @@
#!/bin/sh
# base16-shell (https://github.com/chriskempson/base16-shell)
# Base16 Shell template by Chris Kempson (http://chriskempson.com)
# Monokai scheme by Wimer Hazenberg (http://www.monokai.nl)
color00="2d/2a/2e" # Base 00 - Black
color01="ff/61/88" # Base 08 - Red
color02="a9/dc/76" # Base 0B - Green
color03="ff/d8/66" # Base 0A - Yellow
color04="ab/9d/f2" # Base 0D - Blue
color05="fc/98/67" # Base 0E - Magenta
color06="78/dc/e8" # Base 0C - Cyan
color07="fc/fc/fa" # Base 05 - White
color08="a9/a8/a8" # Base 03 - Bright Black
color09=$color01 # Base 08 - Bright Red
color10=$color02 # Base 0B - Bright Green
color11=$color03 # Base 0A - Bright Yellow
color12=$color04 # Base 0D - Bright Blue
color13=$color05 # Base 0E - Bright Magenta
color14=$color06 # Base 0C - Bright Cyan
color15="ff/ff/ff" # Base 07 - Bright White
color16="19/18/1a" # Base 09
color17="22/1f/22" # Base 0F
color18="56/54/57" # Base 01
color19="80/7e/80" # Base 02
color20="d3/d2/d1" # Base 04
color21="fe/fe/fd" # Base 06
color_foreground="fc/fc/fa" # Base 05
color_background="2d/2a/2e" # Base 00
if [ -n "$TMUX" ]; then
# Tell tmux to pass the escape sequences through
# (Source: http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1324)
put_template() { printf '\033Ptmux;\033\033]4;%d;rgb:%s\033\033\\\033\\' $@; }
put_template_var() { printf '\033Ptmux;\033\033]%d;rgb:%s\033\033\\\033\\' $@; }
put_template_custom() { printf '\033Ptmux;\033\033]%s%s\033\033\\\033\\' $@; }
elif [ "${TERM%%[-.]*}" = "screen" ]; then
# GNU screen (screen, screen-256color, screen-256color-bce)
put_template() { printf '\033P\033]4;%d;rgb:%s\007\033\\' $@; }
put_template_var() { printf '\033P\033]%d;rgb:%s\007\033\\' $@; }
put_template_custom() { printf '\033P\033]%s%s\007\033\\' $@; }
elif [ "${TERM%%-*}" = "linux" ]; then
put_template() { [ $1 -lt 16 ] && printf "\e]P%x%s" $1 $(echo $2 | sed 's/\///g'); }
put_template_var() { true; }
put_template_custom() { true; }
else
put_template() { printf '\033]4;%d;rgb:%s\033\\' $@; }
put_template_var() { printf '\033]%d;rgb:%s\033\\' $@; }
put_template_custom() { printf '\033]%s%s\033\\' $@; }
fi
# 16 color space
put_template 0 $color00
put_template 1 $color01
put_template 2 $color02
put_template 3 $color03
put_template 4 $color04
put_template 5 $color05
put_template 6 $color06
put_template 7 $color07
put_template 8 $color08
put_template 9 $color09
put_template 10 $color10
put_template 11 $color11
put_template 12 $color12
put_template 13 $color13
put_template 14 $color14
put_template 15 $color15
# 256 color space
put_template 16 $color16
put_template 17 $color17
put_template 18 $color18
put_template 19 $color19
put_template 20 $color20
put_template 21 $color21
# foreground / background / cursor color
if [ -n "$ITERM_SESSION_ID" ]; then
# iTerm2 proprietary escape codes
put_template_custom Pg f8f8f2 # foreground
put_template_custom Ph 272822 # background
put_template_custom Pi f8f8f2 # bold color
put_template_custom Pj 49483e # selection color
put_template_custom Pk f8f8f2 # selected text color
put_template_custom Pl f8f8f2 # cursor
put_template_custom Pm 272822 # cursor text
else
put_template_var 10 $color_foreground
if [ "$BASE16_SHELL_SET_BACKGROUND" != false ]; then
put_template_var 11 $color_background
if [ "${TERM%%-*}" = "rxvt" ]; then
put_template_var 708 $color_background # internal border (rxvt)
fi
fi
put_template_custom 12 ";7" # cursor (reverse video)
fi
# clean up
unset -f put_template
unset -f put_template_var
unset -f put_template_custom
unset color00
unset color01
unset color02
unset color03
unset color04
unset color05
unset color06
unset color07
unset color08
unset color09
unset color10
unset color11
unset color12
unset color13
unset color14
unset color15
unset color16
unset color17
unset color18
unset color19
unset color20
unset color21
unset color_foreground
unset color_background

View File

@ -1,4 +1,5 @@
#!/bin/sh
setxkbmap de neo_qwertz
setxkbmap -option compose:sclk
xset r rate 250 40

View File

@ -1,8 +1,8 @@
#!/bin/sh
killall polybar
#sleep 1
sleep 1
polybar -c ~/.config/polybar/config left &
polybar -c ~/.config/polybar/config main &
polybar -c ~/.config/polybar/config right &
#polybar -c ~/.config/polybar/config right &

View File

@ -1,35 +1,45 @@
# Contributor: Patrick Jackson <PatrickSJackson gmail com>
# Maintainer: Christoph Vigano <mail@cvigano.de>
# Maintainer:
pkgname=st
pkgver=0.8.2
pkgname=st-luke-git
_pkgname=st
pkgver=0.8.2.r1062.2087ab9
pkgrel=1
pkgdesc='A simple virtual terminal emulator for X.'
epoch=1
pkgdesc="Luke's simple (suckless) terminal with vim-bindings, transparency, xresources, etc. "
url='https://github.com/LukeSmithxyz/st'
arch=('i686' 'x86_64')
license=('MIT')
depends=('libxft' 'libxext' 'xorg-fonts-misc')
makedepends=('ncurses')
url="http://st.suckless.org"
source=(http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz
config.h)
sha256sums=('SKIP'
'SKIP')
options=('zipman')
depends=('libxft')
makedepends=('ncurses' 'libxext' 'git')
optdepends=('dmenu: feed urls to dmenu')
source=('git://github.com/LukeSmithxyz/st')
sha1sums=('SKIP')
provides=("${_pkgname}")
conflicts=("${_pkgname}")
pkgver() {
cd "${_pkgname}"
printf "%s.r%s.%s" "$(awk '/^VERSION =/ {print $3}' config.mk)" \
"$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
cd $srcdir/$pkgname-$pkgver
# skip terminfo which conflicts with nsurses
sed -i '/tic /d' Makefile
cp /home/kageru/code/st/config.h config.h
cd $srcdir/${_pkgname}
# skip terminfo which conflicts with ncurses
sed -i '/tic /d' Makefile
}
build() {
cd $srcdir/$pkgname-$pkgver
make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
cd "${_pkgname}"
make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
}
package() {
cd $srcdir/$pkgname-$pkgver
make PREFIX=/usr DESTDIR="$pkgdir" TERMINFO="$pkgdir/usr/share/terminfo" install
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm644 README "$pkgdir/usr/share/doc/$pkgname/README"
cd "${_pkgname}"
make PREFIX=/usr DESTDIR="${pkgdir}" install
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md"
install -Dm644 .Xdefaults "${pkgdir}/usr/share/doc/${pkgname}/Xdefaults.example"
}

View File

@ -5,7 +5,7 @@
*
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
*/
static char *font = "Hack:pointsize=13:antialias=true:hintstyle=1:rgba=rgb:autohint=false:lcdfilter=lcddefault:dpi=109";
static char *font = "Hack Nerd Font Mono:size=16:antialias=true:hintstyle=1:rgba=rgb:autohint=false:lcdfilter=lcddefault:dpi=96";
static int borderpx = 2;
/*
@ -24,15 +24,15 @@ char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";
char *vtiden = "\033[?6c";
/* Kerning / character bounding-box multipliers */
static float cwscale = 2.0;
static float chscale = 2.0;
static float cwscale = 1.0;
static float chscale = 1.0;
/*
* word delimiter string
*
* More advanced example: " `'\"()[]{}"
* More advanced example: L" `'\"()[]{}"
*/
char *worddelimiters = " ";
wchar_t *worddelimiters = L" ";
/* selection timeouts (in milliseconds) */
static unsigned int doubleclicktimeout = 300;
@ -84,42 +84,50 @@ unsigned int tabspaces = 8;
/* Terminal colors (16 first used in escape sequence) */
static const char *colorname[] = {
/* 8 normal colors */
"#313132",
"#cc4444",
"#95bd41",
"#e1b153",
"#43a2f3",
"#b286be",
"#50c0d8",
"#c5c8c6",
/* 8 normal colors */
[0] = "#403e41", /* black */
[1] = "#ff6188", /* red */
[2] = "#a9dc76", /* green */
[3] = "#ffd866", /* yellow */
[4] = "#fc9867", /* blue */
[5] = "#ab9df2", /* magenta */
[6] = "#78dce8", /* cyan */
[7] = "#fcfcfa", /* white */
/* 8 bright colors */
"#969896",
"#d63333",
"#8dc910",
"#f5af27",
"#43a9ff",
"#bc79d0",
"#47d3ef",
"#ffffff",
/* 8 bright colors */
[8] = "#727072", /* black */
[9] = "#ff6188", /* red */
[10] = "#a9dc76", /* green */
[11] = "#ffd866", /* yellow */
[12] = "#fc9867", /* blue */
[13] = "#ab9df2", /* magenta */
[14] = "#78dce8", /* cyan */
[15] = "#fcfcfa", /* white */
[255] = 0,
/* more colors can be added after 255 to use with DefaultXX */
"#cccccc",
"#555555",
/* special colors */
[256] = "#303031", /* background */
[257] = "#fcfcfa", /* foreground */
};
/*
* Default colors (colorname index)
* foreground, background, cursor, reverse cursor
*/
unsigned int defaultfg = 7;
unsigned int defaultbg = 0;
static unsigned int defaultcs = 256;
static unsigned int defaultrcs = 257;
unsigned int defaultfg = 257;
unsigned int defaultbg = 256;
unsigned int defaultcs = 257;
unsigned int defaultrcs = 257;
/*
* Colors used, when the specific fg == defaultfg. So in reverse mode this
* will reverse too. Another logic would only make the simple feature too
* complex.
*/
static unsigned int defaultitalic = 7;
static unsigned int defaultunderline = 7;
// opacity
float alpha = 1;
/*
* Default shape of cursor
@ -156,13 +164,33 @@ static unsigned int defaultattr = 11;
*/
static MouseShortcut mshortcuts[] = {
/* button mask string */
{ Button4, XK_ANY_MOD, "\031" },
{ Button5, XK_ANY_MOD, "\005" },
{ Button4, XK_NO_MOD, "\031" },
{ Button5, XK_NO_MOD, "\005" },
};
/* Internal keyboard shortcuts. */
#define MODKEY Mod1Mask
#define TERMMOD (ControlMask|ShiftMask)
#define TERMMOD (Mod1Mask|ShiftMask)
MouseKey mkeys[] = {
/* button mask function argument */
{ Button4, ShiftMask, kscrollup, {.i = 1} },
{ Button5, ShiftMask, kscrolldown, {.i = 1} },
{ Button4, MODKEY, kscrollup, {.i = 1} },
{ Button5, MODKEY, kscrolldown, {.i = 1} },
{ Button4, TERMMOD, zoom, {.f = +1} },
{ Button5, TERMMOD, zoom, {.f = -1} },
};
static char *openurlcmd[] = { "/bin/sh", "-c",
"sed 's/.*│//g' | tr -d '\n' | grep -aEo '(((http|https)://|www\\.)[a-zA-Z0-9.]*[:]?[a-zA-Z0-9./&%?=_-]*)|((magnet:\\?xt=urn:btih:)[a-zA-Z0-9]*)'| uniq | sed 's/^www./http:\\/\\/www\\./g' | dmenu -p 'Follow which url?' -l 10 | xargs -r xdg-open",
"externalpipe", NULL };
static char *copyurlcmd[] = { "/bin/sh", "-c",
"sed 's/.*│//g' | tr -d '\n' | grep -aEo '(((http|https)://|www\\.)[a-zA-Z0-9.]*[:]?[a-zA-Z0-9./&%?=_-]*)|((magnet:\\?xt=urn:btih:)[a-zA-Z0-9]*)' | uniq | sed 's/^www./http:\\/\\/www\\./g' | dmenu -p 'Copy which url?' -l 10 | tr -d '\n' | xclip -selection clipboard",
"externalpipe", NULL };
static char *copyoutput[] = { "/bin/sh", "-c", "st-copyout", "externalpipe", NULL };
static Shortcut shortcuts[] = {
/* mask keysym function argument */
@ -172,12 +200,32 @@ static Shortcut shortcuts[] = {
{ XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
{ TERMMOD, XK_Prior, zoom, {.f = +1} },
{ TERMMOD, XK_Next, zoom, {.f = -1} },
{ TERMMOD, XK_Home, zoomreset, {.f = 0} },
{ TERMMOD, XK_C, clipcopy, {.i = 0} },
{ TERMMOD, XK_V, clippaste, {.i = 0} },
{ TERMMOD, XK_Y, selpaste, {.i = 0} },
{ ShiftMask, XK_Insert, selpaste, {.i = 0} },
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
{ MODKEY, XK_Home, zoomreset, {.f = 0} },
{ ShiftMask, XK_Insert, clippaste, {.i = 0} },
{ MODKEY, XK_c, clipcopy, {.i = 0} },
{ MODKEY, XK_v, clippaste, {.i = 0} },
{ MODKEY, XK_p, selpaste, {.i = 0} },
{ MODKEY, XK_Num_Lock, numlock, {.i = 0} },
{ MODKEY, XK_Control_L, iso14755, {.i = 0} },
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
{ MODKEY, XK_Page_Up, kscrollup, {.i = -1} },
{ MODKEY, XK_Page_Down, kscrolldown, {.i = -1} },
{ MODKEY, XK_k, kscrollup, {.i = 1} },
{ MODKEY, XK_j, kscrolldown, {.i = 1} },
{ MODKEY, XK_Up, kscrollup, {.i = 1} },
{ MODKEY, XK_Down, kscrolldown, {.i = 1} },
{ MODKEY, XK_u, kscrollup, {.i = -1} },
{ MODKEY, XK_d, kscrolldown, {.i = -1} },
{ TERMMOD, XK_Up, zoom, {.f = +1} },
{ TERMMOD, XK_Down, zoom, {.f = -1} },
{ TERMMOD, XK_K, zoom, {.f = +1} },
{ TERMMOD, XK_J, zoom, {.f = -1} },
{ TERMMOD, XK_U, zoom, {.f = +2} },
{ TERMMOD, XK_D, zoom, {.f = -2} },
{ MODKEY, XK_l, externalpipe, {.v = openurlcmd } },
{ MODKEY, XK_y, externalpipe, {.v = copyurlcmd } },
{ MODKEY, XK_o, externalpipe, {.v = copyoutput } },
};
/*