// A postcss plugin that allows partial-global Vue SFC scoped CSS selectors. | |
// | |
// It introduces the :scoped() pseudo-selector. Use this inside Vue's | |
// :global() to once again make something scoped. This is useful | |
// e.g. if you have an attribute/class on the html element to select | |
// theme or locale. | |
// | |
// ## Status | |
// | |
// This works with (at least) Nuxt 3 on Vue 3.3.4. It has not received much |
const ordinalizeNumber = n => { | |
const rule = new Intl.PluralRules('en-US', { type: 'ordinal' }).select(n); | |
const suffix = ({ | |
one: 'st', | |
two: 'nd', | |
few: 'rd', | |
other: 'th', | |
})[rule]; | |
return `${n}${suffix}`; | |
} |
Hi! On Thursday 25 April 2021, I entirely switched from macOS to Linux: https://maelvls.dev/evolution-of-my-home-office/. I took note of every adjustment I had to make along the way. I use Ubuntu "vanilla" (with Gnome as my desktop manager).
🔥 Update 26 June 2023: I am abandoning "desktop" Linux! I can't bear having to work around everything all the time, not even counting the tons of problems that occur whenever I do a major version upgrade (e.g., when I upgraded from 21.10 to 22.04, my PPAs broken obviously, and also I lost all the hack I had made to the
/etc
to work around problems). I am officially back to macOS starting 26 June 2023. I'll still use my Linux workstation remotely over Mosh, but not as a desktop environment.To smoothen the transition, I use the following hacks on macOS:
- Linear Mouse since I can't stand macOS' mouse acceleration and also to fix my mouse wheel's direction. My config:
/* | |
* Viktor's Roam Mobile Double tap to Exluce Filters and Right click on bullets | |
* version: 0.2 | |
* author: @ViktorTabori | |
* | |
* How to install it: | |
* - go to page [[roam/js]] | |
* - create a node with: { {[[roam/js]]}} | |
* - create a clode block under it, and change its type from clojure to javascript | |
* - allow the running of the javascript on the {{[[roam/js]]}} node |
(function () { | |
function loadZendeskChat(callback) { | |
var zdscript = document.createElement('script'); | |
zdscript.setAttribute('id','ze-snippet'); | |
zdscript.src = 'https://static.zdassets.com/ekr/snippet.js?key=XXX-XXX-XXX-XXX'; | |
(document.getElementsByTagName('body')[0]).appendChild(zdscript); | |
window.zdonload = setInterval(function(){ | |
if(typeof zE !== "undefined" && typeof zE.activate !== "undefined") { |
Favorites: | |
Unrefined: | |
!(@home|@$WIFE|@phone|@laptop|@desk|@errand|@office|##$EMPLOYER|##Someday/Maybe) & !search:* | | |
(no priority & !search:* & !recurring & !##Someday/Maybe) | | |
(!search:: & !##Someday/Maybe & !recurring & !no priority) | | |
##Inbox, | |
(##Someday/Maybe|@not_now) & (!no due date|@next) | |
Home: |
.cursor { | |
cursor: url("cursor.png") 0 0, pointer; /* Legacy */ | |
cursor: url("cursor.svg") 0 0, pointer; /* FF */ | |
cursor: -webkit-image-set(url("cursor.png") 1x, url("[email protected]") 2x) 0 0, pointer; /* Webkit */ | |
} |
/** | |
* A linear interpolator for hexadecimal colors | |
* @param {String} a | |
* @param {String} b | |
* @param {Number} amount | |
* @example | |
* // returns #7F7F7F | |
* lerpColor('#000000', '#ffffff', 0.5) | |
* @returns {String} | |
*/ |